﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL.Entity;
using DAL.Persistencia;
using System.Web.Services;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Data.Objects;
using CrystalDecisions.Shared;
using DAL.DataSet;
using NewTierra.Reports;
using CrystalDecisions.CrystalReports.Engine;
using System.Globalization;
using BLL.Utils;
using NewTierra.App_Code;

namespace NewTierra.Pages.Financeiro
{
    public partial class CadastroCusto : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            base.PageLoad();

            if (base.ObterPerfilLogado() == (int)PerfilUsuario.Operacional)
                Response.Redirect("/Pages/Index.aspx");

            if (!IsPostBack)
            {
                PopularDrops();
                BloquearTela();
                popularGridCambio();
                txtSupplier.Focus();
                
                VerificaTela();
            }
        }


        #region PopularGridCambio

        public void popularGridCambio()
        {

            try
            {
                CambioDAL cDAL = new CambioDAL();

                grdCambio.DataSource = cDAL.pesquisarTodos();
                grdCambio.DataBind();


            }
            catch (Exception)
            {

                throw;
            }

        }

        #endregion

        #region PopularCentroCusto
        protected void PopularCentroCusto()
        {
            try
            {
                CentroCustoDAL ccDAL = new CentroCustoDAL();
                cmbCentroCusto.DataSource = ccDAL.consutlarTodos();
                cmbCentroCusto.DataTextField = "CentroCusto_nome";
                cmbCentroCusto.DataValueField = "CentroCusto_id";
                cmbCentroCusto.DataBind();

                cmbCentroCusto.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }
        #endregion

        #region PopularCentroCustoConciliacao
        protected void PopularCentroCustoConciliacao()
        {
            try
            {
                CentroCustoDAL ccDAL = new CentroCustoDAL();
                cmbCentroCustoConciliacao.DataSource = ccDAL.consutlarTodos();
                cmbCentroCustoConciliacao.DataTextField = "CentroCusto_nome";
                cmbCentroCustoConciliacao.DataValueField = "CentroCusto_id";
                cmbCentroCustoConciliacao.DataBind();

                cmbCentroCustoConciliacao.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }
        #endregion

        #region PopularNomeBanco
        protected void PopularNomeBanco()
        {
            try
            {
                F_BancoDAL fbDAL = new F_BancoDAL();
                cmbNomeBanco.DataSource = fbDAL.consultarTodos();
                cmbNomeBanco.DataTextField = "Nome";
                cmbNomeBanco.DataValueField = "id";
                cmbNomeBanco.DataBind();

                cmbNomeBanco.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }
        #endregion

        #region PopularNumeroAgencia
        protected void PopularNumeroAgencia()
        {
            try
            {
                F_AgenciaDAL faDAL = new F_AgenciaDAL();
                cmbNumeroAgencia.DataSource = faDAL.consultarTodos();
                cmbNumeroAgencia.DataTextField = "Numero";
                cmbNumeroAgencia.DataValueField = "id";
                cmbNumeroAgencia.DataBind();
                cmbNumeroAgencia.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }
        #endregion

        #region PopularMoedaTabelas
        protected void PopularMoedaTabelas()
        {
            try
            {
                MoedaDAL moedaDAL = new MoedaDAL();
                cmbMoedaTabelas.DataSource = moedaDAL.ListarTodos();
                cmbMoedaTabelas.DataTextField = "Moeda_sigla";
                cmbMoedaTabelas.DataValueField = "Moeda_id";
                cmbMoedaTabelas.DataBind();
                cmbMoedaTabelas.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }
        #endregion

        #region PopularClassificacaoContabil
        protected void PopularClassificacaoContabil()
        {
            try
            {
                ClassificacaoContabilDAL ccDAL = new ClassificacaoContabilDAL();
                cmbClassificacaoContabil.DataSource = ccDAL.ConsultarTodos();
                cmbClassificacaoContabil.DataTextField = "ClassificacaoContabil_nome";
                cmbClassificacaoContabil.DataValueField = "ClassificacaoContabil_id";
                cmbClassificacaoContabil.DataBind();
                cmbClassificacaoContabil.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }

        }
        #endregion

        #region PopularClassificacaoContabilConciliacao
        protected void PopularClassificacaoContabilConciliacao()
        {
            try
            {
                ClassificacaoContabilDAL ccDAL = new ClassificacaoContabilDAL();
                cmbClassificacaoContabilConciliacao.DataSource = ccDAL.ConsultarTodos();
                cmbClassificacaoContabilConciliacao.DataTextField = "ClassificacaoContabil_nome";
                cmbClassificacaoContabilConciliacao.DataValueField = "ClassificacaoContabil_id";
                cmbClassificacaoContabilConciliacao.DataBind();
                cmbClassificacaoContabilConciliacao.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }

        }
        #endregion

        #region PopularTipoFatura
        protected void PopularTipoFatura()
        {
            try
            {
                TipoFaturaDAL tfDAL = new TipoFaturaDAL();
                cmbTipoFatura.DataSource = tfDAL.consultarTodos();
                cmbTipoFatura.DataTextField = "TipoFatura_nome";
                cmbTipoFatura.DataValueField = "TipoFatura_id";
                cmbTipoFatura.DataBind();
                cmbTipoFatura.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
        #endregion

        #region PopularMoeda

        protected void PopularMoeda()
        {
            try
            {
                MoedaDAL moedaDAL = new MoedaDAL();
                cmbMoeda.DataSource = moedaDAL.ListarTodos();
                cmbMoeda.DataTextField = "Moeda_sigla";
                cmbMoeda.DataValueField = "Moeda_id";
                cmbMoeda.DataBind();
                cmbMoeda.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }


        }

        #endregion

        #region PopularMoedaCambio

        protected void PopularMoedaCambio()
        {
            try
            {
                MoedaDAL moedaDAL = new MoedaDAL();
                cmbMoedaCambioDe.DataSource = moedaDAL.ListarTodos();
                cmbMoedaCambioDe.DataTextField = "Moeda_sigla";
                cmbMoedaCambioDe.DataValueField = "Moeda_id";
                cmbMoedaCambioDe.DataBind();
                cmbMoedaCambioDe.Items.Insert(0, new ListItem("Selecione...", "0"));

                cmbMoedaCambioPara.DataSource = moedaDAL.ListarTodos();
                cmbMoedaCambioPara.DataTextField = "Moeda_sigla";
                cmbMoedaCambioPara.DataValueField = "Moeda_id";
                cmbMoedaCambioPara.DataBind();
                cmbMoedaCambioPara.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }


        }

        #endregion

        #region PopularTipoCambio

        protected void PopularTipoCambio()
        {
            try
            {
                TipoCambioDAL tipoCambioDAL = new TipoCambioDAL();
                cmbTipoCambio.DataSource = tipoCambioDAL.consultarTodos();
                cmbTipoCambio.DataTextField = "nome";
                cmbTipoCambio.DataValueField = "id";
                cmbTipoCambio.DataBind();
                cmbTipoCambio.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }


        }

        #endregion

        #region PopularMoedaConciliacao

        protected void PopularMoedaConciliacao()
        {
            try
            {
                MoedaDAL moedaDAL = new MoedaDAL();
                cmbMoedaConciliacao.DataSource = moedaDAL.ListarTodos();
                cmbMoedaConciliacao.DataTextField = "Moeda_sigla";
                cmbMoedaConciliacao.DataValueField = "Moeda_id";
                cmbMoedaConciliacao.DataBind();
                cmbMoedaConciliacao.Items.Insert(0, new ListItem("Selecione...", "0"));
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }


        }

        #endregion

        #region Limpar Tela
        public void LimparTela()
        {
            txtCambio.Text = "";
            txtComissoes.Text = "";
            txtDeposito.Text = "";
            txtDescontos.Text = "";
            txtDespesas.Text = "";
            txtImpostos.Text = "";
            txtMoraDia.Text = "";
            txtMoraDiaR.Text = "";
            txtMulta.Text = "";
            txtObsComissoes.Text = "";
            txtObsDeposito.Text = "";
            txtObsDescontos.Text = "";
            txtObsDespesas.Text = "";
            txtObsImpostos.Text = "";
            dtPagamento.Text = "";
            txtTotPagar.Text = "";
            txtVrTotServ.Text = "";
            dtEmissao.Text = "";
            dtVencimento.Text = "";
            txtSupplier.Text = "";
            txtInvoice.Text = "";
            txtNumeroBanco.Text = "";
            txtAgencia.Text = "";
            txtConta.Text = "";
            txtInvoiceConferencia.Text = "";
            txtSupplierConferencia.Text = "";
            txtFileNbr.Text = "";
            txtTotalFatura.Text = "";
            txtSaldoConferir.Text = "";
            dtData.Text = "";
            txtPax.Text = "";
            txtTotalFatura.Text = "";
            txtObsGeral.Text = "";
            lblCancelada.Text = "";
            txtValorLiquido.Text = "";
            lblCambioConferencia.Text = "Cambio Conferencia:";
            txtObsConferencia.Text = "";
            txtDataPagamento.Text = "";
            gridInfoConferencia.DataBind();

            ckTodasFaturas.Checked = false;
            ckFPC.Checked = false;
            ckFTC.Checked = false;


            PopularTipoFatura();
            PopularMoeda();
            PopularCentroCusto();
            PopularClassificacaoContabil();

        }
        #endregion

        #region BloquearTela
        protected void BloquearTela()
        {

            txtCambio.Enabled = false;
            txtComissoes.Enabled = false;
            txtDeposito.Enabled = false;
            txtDescontos.Enabled = false;
            txtDespesas.Enabled = false;
            txtImpostos.Enabled = false;
            txtMoraDia.Enabled = false;
            txtMoraDiaR.Enabled = false;
            txtMulta.Enabled = false;
            txtObsComissoes.Enabled = false;
            txtObsDeposito.Enabled = false;
            txtObsDescontos.Enabled = false;
            txtObsDespesas.Enabled = false;
            txtObsImpostos.Enabled = false;
            dtPagamento.Enabled = false;
            txtTotPagar.Enabled = false;
            txtVrTotServ.Enabled = false;
            dtEmissao.Enabled = false;
            dtVencimento.Enabled = false;
            cmbTipoFatura.Enabled = false;
            cmbClassificacaoContabil.Enabled = false;
            cmbMoeda.Enabled = false;
            cmbCentroCusto.Enabled = false;
            txtNumeroBanco.Enabled = false;
            txtAgencia.Enabled = false;
            txtConta.Enabled = false;
            ckFPC.Enabled = false;
            ckFTC.Enabled = false;
            txtInvoice.Enabled = false;
            txtInvoiceConferencia.Enabled = false;
            txtFileNbr.Enabled = false;
            txtObsGeral.Enabled = false;
            txtValorLiquido.Enabled = false;

            txtSupplier.Enabled = true;
            txtSupplierConferencia.Enabled = true;

        }


        #endregion

        #region DesbloqueiaTela
        protected void DesbloqueiaTela()
        {

            txtCambio.Enabled = true;
            txtComissoes.Enabled = true;
            txtDeposito.Enabled = true;
            txtDescontos.Enabled = true;
            txtDespesas.Enabled = true;
            txtImpostos.Enabled = true;
            txtMoraDia.Enabled = true;
            txtMoraDiaR.Enabled = true;
            txtMulta.Enabled = true;
            txtObsComissoes.Enabled = true;
            txtObsDeposito.Enabled = true;
            txtObsDescontos.Enabled = true;
            txtObsDespesas.Enabled = true;
            txtObsImpostos.Enabled = true;
            //dtPagamento.Enabled = true;
            //txtTotPagar.Enabled = true;
            txtVrTotServ.Enabled = true;
            dtEmissao.Enabled = true;
            dtVencimento.Enabled = true;
            cmbTipoFatura.Enabled = true;
            cmbClassificacaoContabil.Enabled = true;
            cmbMoeda.Enabled = true;
            cmbCentroCusto.Enabled = true;
            txtObsGeral.Enabled = true;
            txtSupplier.Enabled = false;
            txtInvoice.Enabled = false;
            //cmbMoeda.SelectedValue = "2";


        }


        #endregion

        #region WebMethods

        [WebMethod]
        public static List<string> SearchSuppliers(string prefixText, int count)
        {
            try
            {
                SupplierDAL s = new SupplierDAL();
                List<Supplier> supp;

                if (prefixText.Equals("*"))
                {
                    supp = s.ListarTodos().OrderBy(a => a.S_nome).ToList();
                }
                else
                {
                    supp = s.ListarTodos(prefixText);
                }

                List<string> lista = new List<string>();

                if (supp.Count == 0)
                {
                    lista.Add("Não existe supplier cadastrado com esse nome.");

                    return lista;
                }

                foreach (Supplier p in supp)
                {
                    lista.Add(p.S_nome);
                }

                return lista;
            }
            catch
            {
                throw;
            }
        }

        [WebMethod]
        public static List<string> SearchFatura(string prefixText, int count, string contextKey)
        {
            try
            {
                FaturaDAL s = new FaturaDAL();
                List<FaturaSupplier> supp;

                if (prefixText.Equals("*"))
                {
                    supp = s.PesquisarTodosPorSupplier(Convert.ToInt32(contextKey)).OrderBy(a => a.Fatura_numero).ToList();
                }
                else
                {
                    supp = s.PesquisarTodosPorSupplier(prefixText, Convert.ToInt32(contextKey));
                }

                List<string> lista = new List<string>();

                if (supp.Count == 0)
                {
                    lista.Add("Não existe Fatura cadastrada com esse nome.");
                    return lista;
                }

                foreach (FaturaSupplier p in supp)
                {
                    lista.Add(p.Fatura_numero);
                }

                return lista;
            }
            catch
            {
                throw;
            }
        }

        [WebMethod]
        public static List<string> SearchFaturaConferencia(string prefixText, int count, string contextKey)
        {
            try
            {
                FaturaDAL s = new FaturaDAL();
                List<FaturaSupplier> supp;

                string[] pars = contextKey.ToString().Split(',');

                string supplier_id = pars[0];
                string checkedBox = pars[1];
                
                if (prefixText.Equals("*"))
                {
                    if (!checkedBox.Equals("false"))
                    {
                        supp = s.PesquisarTodosPorSupplier(Convert.ToInt32(supplier_id)).Where(a => a.C_CentroCusto.CentroCusto_id != 2).OrderBy(a => a.Fatura_numero).ToList();
                    }
                    else
                    {
                        supp = s.PesquisarTodosPorSupplier(Convert.ToInt32(supplier_id)).Where(a => a.C_CentroCusto.CentroCusto_id != 2 && a.Fatura_Valor_Conferir != a.Fatura_VlrTotPagar).OrderBy(a => a.Fatura_numero).ToList();
                    }
                }
                else
                {

                    if (!checkedBox.Equals("false"))
                    {
                        supp = s.PesquisarTodosPorSupplier(prefixText, Convert.ToInt32(supplier_id)).Where(a => a.C_CentroCusto.CentroCusto_id != 2).ToList();
                    }
                    else
                    {
                        supp = s.PesquisarTodosPorSupplier(prefixText, Convert.ToInt32(supplier_id)).Where(a => a.C_CentroCusto.CentroCusto_id != 2 && a.Fatura_Valor_Conferir != a.Fatura_VlrTotPagar).ToList();
                    }
                }

                List<string> lista = new List<string>();

                if (supp.Count == 0)
                {
                    lista.Add("Não existe Fatura cadastrada com esse nome.");
                    return lista;
                }

                foreach (FaturaSupplier p in supp)
                {
                    lista.Add(p.Fatura_numero);
                }

                return lista;
            }
            catch
            {
                throw;
            }
        }

        [WebMethod]
        public static List<string> SearchFile(string prefixText, int count, string contextKey)
        {
            try
            {

                List<string> lista = new List<string>();

                string[] pars2 = contextKey.ToString().Split(',');

                string supplier_id = pars2[0];
                string checkedBox = pars2[1];
               

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = " ";
                sql = sql + "select Distinct q.Quotation_Code Code ";
                sql = sql + "from Quotation q ";
                sql = sql + "inner join Quotation_Grupo qg ON q.Quotation_Id = QG.Quotation_Id ";
                sql = sql + "inner join File_Carrinho fc ON qg.Quotation_Grupo_Id = fc.Quotation_Grupo_Id ";
                sql = sql + "left join File_Tarifas ft ON fc.File_id = ft.File_id ";
                sql = sql + "left join File_Transfers ftra ON fc.File_id = ftra.File_id ";
                sql = sql + "left join File_ServExtra fs ON fc.File_id = fs.File_id ";
                sql = sql + "left join Servico_Completo_File scf ON ftra.File_Transf_id = scf.File_Transf_id ";
                sql = sql + "where " + supplier_id + " in (scf.SupplierID, ft.S_id, ftra.S_id, fs.S_id) ";

                if (!prefixText.Equals("*"))
                {
                    sql = sql + "and q.Quotation_Code like '%" + prefixText + "%'";
                }

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    lista.Add(reader["Code"].ToString());
                }


                if (lista.Count == 0)
                {
                    lista.Add("Não existe Fatura cadastrada com esse nome.");
                    return lista;
                }


                Con.Close();
                return lista;
            }
            catch
            {
                throw;
            }
        }                

        [WebMethod]
        public static List<string> SearchConta(string prefixText, int count)
        {
            try
            {
                F_ContaDAL fcDAL = new F_ContaDAL();
                List<F_Conta> supp;

                if (prefixText.Equals("*"))
                {
                    supp = fcDAL.ListarTodos();
                }
                else
                {
                    supp = fcDAL.pesquisarPorNumeroContaFiltro(prefixText);
                }

                List<string> lista = new List<string>();

                if (supp.Count == 0)
                {
                    lista.Add("Não existe supplier cadastrado com esse nome.");

                    return lista;
                }

                foreach (F_Conta fa in supp)
                {
                    lista.Add(fa.Numero);
                }

                return lista;
            }
            catch
            {
                throw;
            }
        }

               

        [WebMethod]
        public static List<string> SearchContaConciliacao(string prefixText, int count)
        {
            try
            {
                F_ContaDAL fcDAL = new F_ContaDAL();
                List<F_Conta> supp;

                if (prefixText.Equals("*"))
                {
                    supp = fcDAL.ListarTodos();
                }
                else
                {
                    supp = fcDAL.pesquisarPorNumeroContaFiltro(prefixText);
                }

                List<string> lista = new List<string>();

                if (supp.Count == 0)
                {
                    lista.Add("Não existe supplier cadastrado com esse nome.");

                    return lista;
                }

                foreach (F_Conta fa in supp)
                {
                    lista.Add(fa.Numero);
                }

                return lista;
            }
            catch
            {
                throw;
            }
        }

        #endregion

        #region PreencherTela
        protected void PreencherTela(FaturaSupplier fs)
        {
            txtCambio.Text = fs.Fatura_Cambio.ToString();
            txtComissoes.Text = fs.Fatura_Comissoes.ToString();
            txtDeposito.Text = fs.Fatura_Deposito.ToString();
            txtDescontos.Text = fs.Fatura_Descontos.ToString();
            //txtDespesas.Text = fs.Fatura_Despesas.ToString();
            txtImpostos.Text = fs.Fatura_Impostos.ToString();
            txtMoraDia.Text = fs.Fatura_MoraDia.ToString();
            txtMoraDiaR.Text = fs.Fatura_MoraDiaR.ToString();
            txtMulta.Text = fs.Fatura_multa.ToString();
            txtObsComissoes.Text = fs.Fatura_Comissoes_Obs;
            txtObsDeposito.Text = fs.Fatura_Deposito_Obs;
            txtObsDescontos.Text = fs.Fatura_Descontos_Obs;
            //txtObsDespesas.Text = fs.Fatura_Despesas_Obs;
            txtObsImpostos.Text = fs.Fatura_Impostos_Obs;
            txtObsGeral.Text = fs.ObsGeral;
            txtNumeroBanco.Text = fs.Fatura_Numero_Banco;
            txtAgencia.Text = fs.Fatura_Agencia;
            txtConta.Text = fs.Fatura_Conta;
            dtPagamento.Text = string.Format("{0:dd/MM/yyyy}", fs.Fatura_Pagamento);
            //txtTotPagar.Text = fs.Fatura_VlrTotPagar.ToString();
            txtVrTotServ.Text = fs.Fatura_VlrTotServ.ToString();
            txtValorLiquido.Text = Convert.ToString(fs.Fatura_VlrTotServ - fs.Fatura_Impostos - fs.Fatura_Comissoes - fs.Fatura_Descontos);
            txtTotPagar.Text = Convert.ToString((fs.Fatura_VlrTotServ - fs.Fatura_Impostos - fs.Fatura_Comissoes - fs.Fatura_Descontos) + fs.Fatura_MoraDia + fs.Fatura_multa);
            dtEmissao.Text = string.Format("{0:dd/MM/yyyy}", fs.Fatura_Emissao);
            dtVencimento.Text = string.Format("{0:dd/MM/yyyy}", fs.Fatura_Vencimento);
            cmbTipoFatura.SelectedValue = BrancoZero(fs.TipoFatura_id.ToString());
            cmbClassificacaoContabil.SelectedValue = BrancoZero(fs.ClassificacaoContabil_id.ToString());
            cmbMoeda.SelectedValue = BrancoZero(fs.Moeda_id.ToString());
            cmbCentroCusto.SelectedValue = BrancoZero(fs.CentroCusto_id.ToString());
            if (fs.Fatura_Status == true)
            {
                lblCancelada.Text = "CANCELADA";
            }

            txtDescontos.Text = Decimal.Parse(txtDescontos.Text).ToString("N2");
            txtComissoes.Text = Decimal.Parse(txtComissoes.Text).ToString("N2");
            txtImpostos.Text = Decimal.Parse(txtImpostos.Text).ToString("N2");
            txtValorLiquido.Text = Decimal.Parse(txtValorLiquido.Text).ToString("N2");
            txtVrTotServ.Text = Decimal.Parse(txtVrTotServ.Text).ToString("N2");
            txtMoraDia.Text = Decimal.Parse(txtMoraDia.Text).ToString("N2");
            txtMulta.Text = Decimal.Parse(txtMulta.Text).ToString("N2");
            txtTotPagar.Text = Decimal.Parse(txtTotPagar.Text).ToString("N2");


            if (fs.Fatura_Pagamento != null)
            {
                Fatura_Supplier_Pagamento faturaSupplierPagamento = new Fatura_Supplier_Pagamento();
                FaturaSupplierPagamentoDAL fspDAL = new FaturaSupplierPagamentoDAL();
                faturaSupplierPagamento = fspDAL.PesquisarPorIdGrupo(Convert.ToInt32(fs.id_Fatura_Supplier_Pagamento_Grupo));

                txtNumeroBanco.Text = faturaSupplierPagamento.F_Conta.F_Agencia.F_Banco.Nome;
                txtAgencia.Text = faturaSupplierPagamento.F_Conta.F_Agencia.Nome;
                txtConta.Text = faturaSupplierPagamento.F_Conta.Numero;
                txtDataPagamento.Text = string.Format("{0:dd/MM/yyyy}", fs.Fatura_Pagamento);
            }



        }
        #endregion

        #region Regras

        public void PopularDrops()
        {
            PopularCentroCusto();
            PopularTipoFatura();
            PopularClassificacaoContabil();
            PopularMoeda();
            PopularNomeBanco();
            PopularNumeroAgencia();
            PopularMoedaTabelas();
            PopularCentroCustoConciliacao();
            PopularClassificacaoContabilConciliacao();
            PopularMoedaConciliacao();
            PopularMoedaCambio();
            PopularTipoCambio();

        }

        public void VerificaTela()
        {
            lblCambio.Visible = false;
            txtCambio.Visible = false;
            lblDeposito.Visible = false;
            txtDeposito.Visible = false;
            lblObsDeposito.Visible = false;
            txtObsDeposito.Visible = false;
            lblDespesas.Visible = false;
            txtDespesas.Visible = false;
            lblObsDespesas.Visible = false;
            txtObsDespesas.Visible = false;
            lblObsComissoes.Visible = false;
            txtObsComissoes.Visible = false;
            lblObsDescontos.Visible = false;
            txtObsDescontos.Visible = false;
            lblObsImpostos.Visible = false;
            txtObsImpostos.Visible = false;
            lblMoraDiaR.Visible = false;
            txtMoraDiaR.Visible = false;
            dtPagamento.Visible = false;
            lblPagamento.Visible = false;

            ckFTC.Checked = false;
            ckFPC.Checked = false;

            txtSupplier.TabIndex = 1;
            txtInvoice.TabIndex = 2;
            //dtEmissao.TabIndex = 3;
            //dtVencimento.TabIndex = 4;
            txtVrTotServ.TabIndex = 5;
            cmbCentroCusto.TabIndex = 6;
            cmbClassificacaoContabil.TabIndex = 7;
            cmbTipoFatura.TabIndex = 8;

            btnSalvar.TabIndex = 9;
            btnNovo.TabIndex = 10;
        }



        protected void btnFiltroNomeSupplier_Click(object sender, EventArgs e)
        {
            try
            {
                SupplierDAL sd = new SupplierDAL();
                Supplier s = sd.ObterSupplierPorNome(txtSupplier.Text.Trim());

                txtS_id.Text = s.S_id.ToString();
                txtInvoice.Enabled = true;
                txtInvoice.Focus();
                txtSupplier.Enabled = false;

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);

            }
        }

        protected void btnFiltroNomeSupplierConferencia_Click(object sender, EventArgs e)
        {
            try
            {
                SupplierDAL sd = new SupplierDAL();
                Supplier s = sd.ObterSupplierPorNome(txtSupplierConferencia.Text.Trim());
                txtSupplierConferencia_id.Text = s.S_id.ToString();
                txtInvoiceConferencia.Enabled = true;
                txtInvoiceConferencia.Focus();
                txtSupplierConferencia.Enabled = false;

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);

            }
        }

        protected void btnFiltroNumeroFatura_Click(object sender, EventArgs e)
        {
            try
            {
                FaturaDAL fd = new FaturaDAL();
                FaturaSupplier f = fd.PesquisarUmPorSupplier(txtInvoice.Text.Trim(), Convert.ToInt32(txtS_id.Text));
                //txtInvoice_id.Text = f.Fatura_id;
                txtInvoice_id.Text = f.Fatura_id.ToString();
                PreencherTela(f);
                pesquisaCheckBoxConferencia();
                DesbloqueiaTela();
                cmbMoeda.SelectedValue = BrancoZero(f.Moeda_id.ToString());
                dtEmissao.Focus();

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void btnFiltroNumeroFaturaConferencia_Click(object sender, EventArgs e)
        {
            try
            {
                FaturaDAL fd = new FaturaDAL();
                FaturaSupplier f = fd.PesquisarUmPorSupplier(txtInvoiceConferencia.Text.Trim(), Convert.ToInt32(txtSupplierConferencia_id.Text));
                if (f != null)
                {
                    txtInvoiceConferencia_id.Text = f.Fatura_id.ToString();
                    txtFileNbr.Enabled = true;
                    txtInvoiceConferencia.Enabled = false;
                    Moeda m = new Moeda();
                    MoedaDAL mDAL = new MoedaDAL();
                    m = mDAL.ObterPorId(Convert.ToInt32(f.Moeda_id));
                    lblCambioConferencia.Text = "Cambio Conferencia: " + m.Moeda_sigla;
                    txtObsConferencia.Text = f.obs_conferencia;
                    txtTotalFatura.Text = Convert.ToString(f.Fatura_VlrTotServ - f.Fatura_Impostos - f.Fatura_Comissoes - f.Fatura_Descontos);
                    txtFileNbr.Focus();
                }
                else
                {
                    txtInvoiceConferencia.Focus();
                    MostrarMsg("Escolher uma fatura cadastrada.");
                }

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected String BrancoNulo(string texto)
        {
            if (texto.Equals(""))
            {
                return null;
            }
            else
            {
                return texto;
            }

        }

        protected String BrancoZero(string texto)
        {
            if (texto.Equals(""))
            {
                return "0";
            }
            else
            {
                return texto;
            }
        }

        protected string NuloZero(string valor)
        {
            if (valor == null)
            {
                return "0";
            }
            else
            {
                return valor;
            }
        }

        protected bool CamposObrigatorios()
        {

            if (txtSupplier.Text.Equals(""))
            {
                MostrarMsg("Escolher um Supplier");
                txtSupplier.Focus();
                return false;
            }
            else
            {
                if (txtInvoice.Text.Equals(""))
                {
                    MostrarMsg("Preenher um Numero de Fatura");
                    txtInvoice.Focus();
                    return false;
                }
                else
                {
                    if (dtEmissao.Text.Equals(""))
                    {
                        MostrarMsg("Escolher uma Data de Emissão");
                        dtEmissao.Focus();
                        return false;
                    }
                    else
                    {
                        if (dtVencimento.Text.Equals(""))
                        {
                            MostrarMsg("Escolher uma Data de Vencimento");
                            dtVencimento.Focus();
                            return false;
                        }
                        else
                        {
                            if (txtVrTotServ.Text.Equals(""))
                            {
                                MostrarMsg("Preenhcer Valor Bruto");
                                txtTotPagar.Focus();
                                return false;
                            }
                            else
                            {
                                if (cmbTipoFatura.SelectedValue.Equals("0"))
                                {
                                    MostrarMsg("Escolher um Tipo Fatura");
                                    cmbTipoFatura.Focus();
                                    return false;
                                }
                                else
                                {
                                    if (cmbCentroCusto.SelectedValue.Equals("0"))
                                    {
                                        MostrarMsg("Escolher Centro de Custos");
                                        cmbCentroCusto.Focus();
                                        return false;
                                    }
                                    else
                                    {
                                        if (cmbClassificacaoContabil.SelectedValue.Equals("0"))
                                        {
                                            MostrarMsg("Escolher uma Classificação Contábil");
                                            cmbClassificacaoContabil.Focus();
                                            return false;
                                        }
                                        else
                                        {
                                            if (cmbMoeda.SelectedValue.Equals("0"))
                                            {
                                                MostrarMsg("Escolher Moeda");
                                                cmbMoeda.Focus();
                                                return false;
                                            }
                                            else
                                            {
                                                return true;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

        }

        protected void MostrarMsg(string Msg)
        {
            ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "call me", "showAutoCloseMessage('" + Msg + "')", true);
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {

            try
            {
                if (CamposObrigatorios())
                {

                    FaturaDAL fd = new FaturaDAL();
                    FaturaSupplier cc = new FaturaSupplier();

                    cc.Fatura_id = Convert.ToInt32(BrancoZero(txtInvoice_id.Text));
                    cc.Fatura_numero = BrancoNulo(txtInvoice.Text);
                    cc.ClassificacaoContabil_id = Convert.ToInt32(cmbClassificacaoContabil.SelectedValue);
                    cc.Moeda_id = Convert.ToInt32(cmbMoeda.SelectedValue);
                    cc.CentroCusto_id = Convert.ToInt32(cmbCentroCusto.SelectedValue);
                    cc.Supplier_id = Convert.ToInt32(txtS_id.Text);
                    cc.TipoFatura_id = Convert.ToInt32(cmbTipoFatura.SelectedValue);
                    //cc.Fatura_Cambio = Convert.ToInt32(BrancoNulo(txtCambio.Text));
                    cc.Fatura_Comissoes = Convert.ToDecimal(BrancoNulo(txtComissoes.Text));
                    cc.Fatura_Comissoes_Obs = txtObsComissoes.Text;
                    //cc.Fatura_Deposito = Convert.ToInt32(BrancoNulo(txtDeposito.Text));
                    //cc.Fatura_Deposito_Obs = txtObsDeposito.Text;
                    cc.Fatura_Descontos = Convert.ToDecimal(BrancoNulo(txtDescontos.Text));
                    cc.Fatura_Descontos_Obs = txtObsDescontos.Text;
                    //cc.Fatura_Despesas = Convert.ToDecimal(BrancoNulo(txtDespesas.Text));
                    //cc.Fatura_Despesas_Obs = txtObsDespesas.Text;
                    cc.Fatura_Emissao = Convert.ToDateTime(BrancoNulo(dtEmissao.Text));
                    cc.Fatura_Impostos = Convert.ToDecimal(BrancoNulo(txtImpostos.Text));
                    cc.Fatura_Impostos_Obs = txtObsImpostos.Text;
                    cc.Fatura_MoraDia = Convert.ToDecimal(BrancoNulo(txtMoraDia.Text));
                    cc.Fatura_MoraDiaR = Convert.ToDecimal(BrancoNulo(txtMoraDiaR.Text));
                    cc.Fatura_multa = Convert.ToDecimal(BrancoNulo(txtMulta.Text));
                    //cc.Fatura_Pagamento = Convert.ToDateTime(BrancoNulo(dtPagamento.Text));
                    cc.Fatura_Vencimento = Convert.ToDateTime(BrancoNulo(dtVencimento.Text));

                    txtTotPagar.Text = Convert.ToString(Convert.ToDecimal(Convert.ToDecimal(BrancoNulo(txtVrTotServ.Text)) - Convert.ToDecimal(BrancoNulo(txtImpostos.Text)) - Convert.ToDecimal(BrancoNulo(txtComissoes.Text)) - Convert.ToDecimal(BrancoNulo(txtDescontos.Text))) + Convert.ToDecimal(BrancoNulo(txtMoraDia.Text)) + Convert.ToDecimal(BrancoNulo(txtMulta.Text)));
                    cc.Fatura_VlrTotPagar = Convert.ToDecimal(BrancoNulo(txtTotPagar.Text));

                    txtValorLiquido.Text = Convert.ToString(Convert.ToDecimal(BrancoNulo(txtVrTotServ.Text)) - Convert.ToDecimal(BrancoNulo(txtImpostos.Text)) - Convert.ToDecimal(BrancoNulo(txtComissoes.Text)) - Convert.ToDecimal(BrancoNulo(txtDescontos.Text)));




                    cc.Fatura_VlrTotServ = Convert.ToDecimal(BrancoNulo(txtVrTotServ.Text));
                    cc.Fatura_Numero_Banco = txtNumeroBanco.Text;
                    cc.Fatura_Agencia = txtAgencia.Text;
                    cc.Fatura_Conta = txtConta.Text;
                    cc.ObsGeral = txtObsGeral.Text;
                    cc.Fatura_Status = false;


                    FaturaSupplier fs = fd.PesquisarUmPorSupplier(txtInvoice.Text, Convert.ToInt32(txtS_id.Text));
                    if (fs == null)
                    {
                        cc.Fatura_Valor_Conferir = 0;
                        fd.Salvar(cc);
                        btnNovo.Focus();
                        MostrarMsg("Registro incluido com sucesso");
                    }
                    else
                    {
                        fd.Alterar(cc);
                        btnNovo.Focus();
                        //BloquearTela();
                        //LimparTela();

                        MostrarMsg("Registro atualizado com sucesso");
                    }
                }
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }


        }

        protected void btnNovo_Click(object sender, EventArgs e)
        {
            try
            {
                BloquearTela();
                LimparTela();
                txtSupplier.Focus();
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void btnNovaConferencia_Click(object sender, EventArgs e)
        {
            try
            {
                BloquearTela();
                LimparTela();
                GridCadPais.DataSource = "";
                GridCadPais.DataBind();
                txtSupplierConferencia.Focus();
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }

        }

        public void pesquisaCheckBoxConferencia()
        {

            string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
            SqlConnection Con = new SqlConnection(pars[1]);
            string sql;

            Con.Open();

            sql = " ";
            sql = sql + "select Fatura_Valor_Conferir from FaturaSupplier where Fatura_id = " + txtInvoice_id.Text;


            SqlCommand cmd = new SqlCommand(sql, Con);
            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                if (!reader["Fatura_Valor_Conferir"].ToString().Equals("") && Convert.ToDouble(reader["Fatura_Valor_Conferir"].ToString()) != 0)
                {

                    if (Convert.ToDouble(reader["Fatura_Valor_Conferir"].ToString()) == Convert.ToDouble(txtValorLiquido.Text))
                    {
                        ckFTC.Checked = true;
                    }
                    else
                    {
                        ckFPC.Checked = true;
                    }


                }

            }

            Con.Close();


        }

        public void totalConferir()
        {

            try
            {


                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = " ";
                sql = sql + "select Fatura_Valor_Conferir from FaturaSupplier where Fatura_id = " + txtInvoiceConferencia_id.Text;


                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    if (!reader["Fatura_Valor_Conferir"].ToString().Equals(""))
                    {
                        txtSaldoConferir.Text = Convert.ToString(Convert.ToDouble(txtTotalFatura.Text) - Convert.ToDouble(reader["Fatura_Valor_Conferir"].ToString()));
                    }
                    else
                    {
                        txtSaldoConferir.Text = Convert.ToString(Convert.ToDouble(txtTotalFatura.Text));
                    }
                }

                Con.Close();

            }
            catch (Exception ex)
            {
                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);

                Log.Save((trace.GetFrame(0).GetMethod().ReflectedType.FullName), ("Linha: " + trace.GetFrame(0).GetFileLineNumber()), ("Column: " + trace.GetFrame(0).GetFileColumnNumber()), ex.Message);
                MostrarMsg(ex.Message);
            }


        }

        #region preencheDataGrid



        public List<ModeloGrid> preenncheModeloGrid(int idSupplier, string txtNumeroFile)
        {

            try
            {

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = " ";
                sql = sql + "select ftra.File_Transf_id id, 'Transfers' tab, m.Moeda_sigla Moeda, qg.Pax_Group_Name Pax, qg.dataIN dataI, qg.dateOut dataO, ftra.Transf_valor TarifaValor, DATEDIFF(DAY, ftra.Data_From, ftra.Data_To) NumNoites, ftra.Paying_Pax PayingPax, ftra.Data_From DataFrom, ftra.Data_To DataTo, ftra.Transf_nome ServiceName, s.S_razaosocial razaoSocial, ftra.FTC FTC, ftra.Valor_Conferir ValorConferir, ftra.Cambio Cambio, ftra.Cancelado Cancelado ";
                sql = sql + "from Quotation q ";
                sql = sql + "inner join Quotation_Grupo qg ON q.Quotation_Id = QG.Quotation_Id ";
                sql = sql + "inner join File_Carrinho fc ON qg.Quotation_Grupo_Id = fc.Quotation_Grupo_Id ";
                sql = sql + "inner join Moeda m ON qg.Moeda_id = m.Moeda_id ";
                sql = sql + "left join File_Transfers ftra ON fc.File_id = ftra.File_id and ftra.S_id = ftra.S_id ";
                sql = sql + "inner join Supplier s ON ftra.S_id = s.S_id ";
                sql = sql + "where ftra.S_id = " + idSupplier;
                sql = sql + "and Q.Quotation_Code = '" + txtNumeroFile + "'";
                sql = sql + "AND (ftra.SubServico IS NULL) ";

                sql = sql + "and ftra.Range_id IS NULL ";

                sql = sql + "Union all ";


                sql = sql + "SELECT Servico_Completo_File.ServicoCompletoFile_id AS Id, 'Servico_Completo_File' AS tab, Moeda.Moeda_sigla AS Moeda, Quotation_Grupo.Pax_Group_Name AS Pax, Quotation_Grupo.dataIN AS dataI, Quotation_Grupo.dateOut AS dataO, Servico_Completo_File.Valor AS TarifaValor, DATEDIFF(DAY, File_Transfers.Data_From, File_Transfers.Data_To) AS NumNoites, File_Transfers.Paying_Pax AS PayingPax, File_Transfers.Data_From AS DataFrom, File_Transfers.Data_To AS DataTo, File_Transfers.Transf_nome AS ServiceName, Supplier.S_razaosocial AS razaoSocial, Servico_Completo_File.FTC, Servico_Completo_File.Valor_Conferir AS ValorConferir, Servico_Completo_File.Cambio, Servico_Completo_File.Cancelado ";
                sql = sql + "FROM File_Carrinho ";
                sql = sql + "INNER JOIN Servico_Completo_File ";
                sql = sql + "INNER JOIN File_Transfers ON Servico_Completo_File.File_Transf_id = File_Transfers.File_Transf_id ";
                sql = sql + "INNER JOIN Supplier ON Servico_Completo_File.SupplierID = Supplier.S_id ";
                sql = sql + "INNER JOIN Moeda ON File_Transfers.Moeda_id = Moeda.Moeda_id ON File_Carrinho.File_id = File_Transfers.File_id ";
                sql = sql + "INNER JOIN Quotation ";
                sql = sql + "INNER JOIN Quotation_Grupo ON Quotation.Quotation_Id = Quotation_Grupo.Quotation_Id ON File_Carrinho.Quotation_Grupo_Id = Quotation_Grupo.Quotation_Grupo_Id ";
                sql = sql + "where Servico_Completo_File.SupplierID = " + idSupplier;
                sql = sql + "and Quotation.Quotation_Code = '" + txtNumeroFile + "'";
                //sql = sql + "AND (ftra.SubServico IS NULL) ";

                //sql = sql + "and ftra.Range_id <> 0 ";

                sql = sql + "Union all ";


                sql = sql + "select fs.File_ServExtra_id id, 'ServExtra' tab, m.Moeda_sigla Moeda, qg.Pax_Group_Name Pax, qg.dataIN dataI, qg.dateOut dataO, fs.File_ServExtra_valor TarifaValor, DATEDIFF(DAY, fs.Data_From, fs.Data_To) NumNoites, fs.Paying_Pax PayingPax, fs.Data_From DataFrom, fs.Data_To DataTo, fs.File_ServExtra_nome ServiceName, s.S_razaosocial razaoSocial, fs.FTC, fs.Valor_Conferir ValorConferir, fs.Cambio Cambio, fs.Cancelado Cancelado ";
                sql = sql + "from Quotation q ";
                sql = sql + "inner join Quotation_Grupo qg ON q.Quotation_Id = QG.Quotation_Id ";
                sql = sql + "inner join File_Carrinho fc ON qg.Quotation_Grupo_Id = fc.Quotation_Grupo_Id ";
                sql = sql + "inner join Moeda m ON qg.Moeda_id = m.Moeda_id ";
                sql = sql + "right join File_ServExtra fs ON fc.File_id = fs.File_id ";
                sql = sql + "inner join Supplier s ON fs.S_id = s.S_id ";
                sql = sql + "where fs.S_id = " + idSupplier;
                sql = sql + "and Q.Quotation_Code = '" + txtNumeroFile + "'";
                sql = sql + "and fs.Range_id IS NULL ";

                sql = sql + "Union all ";

                sql = sql + "select ft.File_Tarifas_id id, 'Tarifas' tab, m.Moeda_sigla Moeda, qg.Pax_Group_Name Pax, qg.dataIN dataI, qg.dateOut dataO, ft.S_merc_tarif_valor TarifaValor, ft.NumNoites NumNoites, ft.Supp_Paying_Pax PayingPax, ft.Data_From DataFrom, ft.Data_To DataTo, (s.S_razaosocial + ' - ' + ft.Categoria + ' ' + ft.Room) ServiceName, s.S_razaosocial razaoSocial, ft.FTC, ft.Valor_Conferir ValorConferir, ft.Cambio Cambio, ft.Cancelado Cancelado ";
                sql = sql + "from Quotation q ";
                sql = sql + "inner join Quotation_Grupo qg ON q.Quotation_Id = QG.Quotation_Id ";
                sql = sql + "inner join File_Carrinho fc ON qg.Quotation_Grupo_Id = fc.Quotation_Grupo_Id ";
                sql = sql + "inner join Moeda m ON qg.Moeda_id = m.Moeda_id ";
                sql = sql + "inner join File_Tarifas ft ON fc.File_id = ft.File_id ";
                sql = sql + "inner join Supplier s ON ft.S_id = s.S_id ";
                sql = sql + "where ft.S_id = " + idSupplier;
                sql = sql + "and Q.Quotation_Code = '" + txtNumeroFile + "'";
                sql = sql + "and ft.Range_id IS NULL ";



                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                List<ModeloGrid> listaModeloGrid = new List<ModeloGrid>();
                ModeloGrid modeloGrid;
                int index = 0;
                while (reader.Read())
                {
                    modeloGrid = new ModeloGrid();

                    modeloGrid.Index = index;
                    modeloGrid.Pax = reader["Pax"].ToString();
                    modeloGrid.NomeServico = reader["ServiceName"].ToString();
                    if (modeloGrid.NomeServico.Equals(""))
                    {
                        modeloGrid.NomeServico = reader["razaoSocial"].ToString();
                    }
                    modeloGrid.SuppPayingPax = reader["PayingPax"].ToString();
                    modeloGrid.DataFrom = System.DateTime.Parse(Convert.ToString(reader["DataFrom"])).ToString("dd/MM/yyyy");
                    modeloGrid.DataTo = System.DateTime.Parse(Convert.ToString(reader["DataTo"])).ToString("dd/MM/yyyy");
                    modeloGrid.Moeda = reader["Moeda"].ToString();

                    if (Convert.ToDouble(reader["NumNoites"]) == 0)
                    {
                        modeloGrid.Total = Convert.ToDouble(reader["TarifaValor"])
                        * Convert.ToDouble(reader["PayingPax"]);
                    }
                    else
                    {
                        modeloGrid.Total = Convert.ToDouble(reader["TarifaValor"])
                        * Convert.ToDouble(reader["NumNoites"])
                        * Convert.ToDouble(reader["PayingPax"]);
                    }

                    modeloGrid.DataI = System.DateTime.Parse(Convert.ToString(reader["dataI"])).ToString("dd/MM/yyyy");
                    modeloGrid.DataO = System.DateTime.Parse(Convert.ToString(reader["dataO"])).ToString("dd/MM/yyyy");

                    if (reader["FTC"].ToString().Equals(""))
                    {
                        modeloGrid.Ftc = false;
                    }
                    else
                    {
                        modeloGrid.Ftc = Convert.ToBoolean(reader["FTC"]);
                    }
                    modeloGrid.Tabela = reader["tab"].ToString();
                    modeloGrid.Id = Convert.ToInt32(reader["id"].ToString());
                    modeloGrid.Cambio = Convert.ToDouble(BrancoZero(reader["Cambio"].ToString()));
                    modeloGrid.ValorConferir = Convert.ToDouble(BrancoZero(reader["ValorConferir"].ToString()));
                    if (modeloGrid.ValorConferir > 0)
                    {
                        modeloGrid.SaldoConferir = 0;
                    }
                    else
                    {
                        modeloGrid.SaldoConferir = modeloGrid.Total - totalUsd(Convert.ToInt32(reader["id"].ToString()), reader["tab"].ToString());
                    }



                    if (modeloGrid.ValorConferir == 0 || modeloGrid.SaldoConferir == 0)
                    {
                        modeloGrid.CambioConferencia = 0;
                    }
                    else
                    {
                        modeloGrid.CambioConferencia = modeloGrid.ValorConferir / modeloGrid.SaldoConferir;
                    }

                    if (modeloGrid.Cambio != null && modeloGrid.Cambio > 0)
                    {
                        modeloGrid.CambioConferencia = modeloGrid.Cambio;
                    }



                    if (reader["Cancelado"].ToString().Equals(""))
                    {
                        modeloGrid.Cancelado = false;
                    }
                    else
                    {
                        modeloGrid.Cancelado = Convert.ToBoolean(reader["Cancelado"]);
                    }

                    if (modeloGrid.Cancelado)
                    {
                        modeloGrid.ValorConferir = 0;
                        modeloGrid.CambioConferencia = 0;
                    }

                    listaModeloGrid.Add(modeloGrid);

                    index = index + 1;
                }

                Con.Close();

                return listaModeloGrid;

            }
            catch (Exception)
            {

                throw;
            }

        }

        public void preencheDataGrid()
        {


            List<ModeloGrid> listaModeloGrid = preenncheModeloGrid(Convert.ToInt32(txtSupplierConferencia_id.Text), txtFileNbr.Text);

            if (listaModeloGrid.Count != 0)
            {
                txtPax.Text = listaModeloGrid.First().Pax;
            }
            GridCadPais.DataSource = listaModeloGrid;
            GridCadPais.DataBind();


            foreach (GridViewRow item in GridCadPais.Rows)
            {
                foreach (ModeloGrid modelo in listaModeloGrid)
                {
                    if (modelo.Index == item.RowIndex)
                    {
                        TextBox txtValorConferir = (TextBox)item.FindControl("txtValorConferir");
                        CheckBox chkStatus = (CheckBox)item.FindControl("chkStatus");
                        CheckBox ckBoxCancelado = (CheckBox)item.FindControl("cancelado");
                        CheckBox chkConferenciaMultipla = (CheckBox)item.FindControl("conferenciaMultipla");

                        txtValorConferir.Text = modelo.ValorConferir.ToString();

                        if (modelo.ValorConferir != 0)
                        {
                            txtValorConferir.Enabled = false;
                            chkStatus.Enabled = false;

                        }
                        else
                        {
                            txtValorConferir.Enabled = true;
                        }

                        if (chkStatus.Checked)
                        {
                            txtValorConferir.Enabled = false;
                            chkStatus.Enabled = false;
                            chkConferenciaMultipla.Enabled = false;
                        }


                        ckBoxCancelado.Checked = modelo.Cancelado;

                        if (modelo.Cancelado)
                        {
                            chkStatus.Enabled = false;
                            txtValorConferir.Enabled = false;
                        }

                        CheckBox ckBoxConferenciaMultipla = (CheckBox)item.FindControl("conferenciaMultipla");
                        ckBoxConferenciaMultipla.Checked = false;


                    }
                }
            }

            //}
            //catch (Exception ex)
            //{
            //    System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);

            //    Log.Save((trace.GetFrame(0).GetMethod().ReflectedType.FullName), ("Linha: " + trace.GetFrame(0).GetFileLineNumber()), ("Column: " + trace.GetFrame(0).GetFileColumnNumber()), ex.Message);
            //    MostrarMsg(ex.Message);
            //    MostrarMsg(ex.Message);
            //}
        }

        #endregion

        public List<ModeloInfoConferencia> consultaGridInfoConferencia(int idFatura)
        {
            try
            {
                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;
                ModeloInfoConferencia mic;
                List<ModeloInfoConferencia> listaMic = new List<ModeloInfoConferencia>();

                sql = " ";
                sql = sql + " SELECT nome_file, SUM(Reais) as total";
                sql = sql + " from F_Conferencia";
                sql = sql + " where id_fatura = " + idFatura;
                sql = sql + " and status = 0";
                sql = sql + " group by nome_file ";


                Con.Open();
                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    mic = new ModeloInfoConferencia();
                    mic.NumeroFile = reader["nome_file"].ToString();
                    mic.ValorReaisTotal = reader["total"].ToString();
                    listaMic.Add(mic);
                }

                Con.Close();
                return listaMic;
            }
            catch
            {
                throw;
            }
        }

        public double totalUsd(int idServico, string tabela)
        {
            try
            {
                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = " ";
                sql = sql + "select SUM(USD) Total from F_Conferencia ";
                sql = sql + "where id_servico = " + idServico;
                sql = sql + "and tabela_referencia = '" + tabela + "'";
                sql = sql + "and status = 0";

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                double total = 0;

                while (reader.Read())
                {
                    if (reader["Total"].ToString() != "")
                    {
                        total = Convert.ToDouble(reader["Total"]);
                    }
                }

                Con.Close();
                return total;
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
                return 0;
            }


        }

        #region preencheDataGridFilho

        public List<ModeloGridFilho> preencheDataGridFilho(int idServico, string tabela, int indexPai, bool ftc)
        {

            try
            {


                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = " ";
                sql = sql + "select id, USD, Reais, status, datahora, id_login, tipo_conferencia, id_fatura from F_Conferencia ";
                sql = sql + "where id_servico = " + idServico;
                sql = sql + "and tabela_referencia = '" + tabela + "'";

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                List<ModeloGridFilho> listaModeloGridFilho = new List<ModeloGridFilho>();
                ModeloGridFilho modeloGridFilho;
                UsuarioDAL uDAL = new UsuarioDAL();
                Usuario u = new Usuario();
                string pagou = "";
                int index = 0;
                while (reader.Read())
                {

                    if (Convert.ToInt32(txtInvoiceConferencia_id.Text) == Convert.ToInt32(reader["id_fatura"]) && !Convert.ToBoolean(reader["status"]))
                    {
                        pagou = "SIM";
                    }

                    modeloGridFilho = new ModeloGridFilho();

                    modeloGridFilho.Index = index;
                    modeloGridFilho.Id = Convert.ToInt32(reader["id"]);
                    modeloGridFilho.IdFatura = Convert.ToInt32(reader["id_fatura"]);

                    if (reader["usd"].ToString().Equals("0,00"))
                    {
                        modeloGridFilho.Usd = "";
                        modeloGridFilho.Cambio = "";
                    }
                    else
                    {
                        modeloGridFilho.Usd = reader["USD"].ToString();
                        modeloGridFilho.Cambio = Convert.ToString(Convert.ToDouble(reader["Reais"]) / Convert.ToDouble(reader["USD"]));
                    }

                    modeloGridFilho.Reais = Convert.ToDouble(reader["Reais"]);
                    //modeloGridFilho.SaldoConferir = Convert.ToDouble(reader["Saldo_Conferir"]);
                    modeloGridFilho.Tabela = tabela;

                    modeloGridFilho.IdServico = idServico;
                    modeloGridFilho.IndexPai = indexPai;
                    modeloGridFilho.Data = Convert.ToDateTime(reader["datahora"]);


                    u = uDAL.ObterPorId(Convert.ToInt32(reader["id_login"]));
                    modeloGridFilho.Login = u.US_nome;

                    if (reader["status"].ToString().Equals(""))
                    {
                        modeloGridFilho.Status = false;
                    }
                    else
                    {
                        modeloGridFilho.Status = Convert.ToBoolean(reader["status"]);
                    }

                    modeloGridFilho.Modo = "antigo";
                    modeloGridFilho.Tipo_conferencia = reader["tipo_conferencia"].ToString();


                    listaModeloGridFilho.Add(modeloGridFilho);

                    index = index + 1;
                }


                if (ftc && !pagou.Equals("SIM"))
                {
                    ModeloGridFilho modeloFilhoBranco = new ModeloGridFilho();

                    modeloFilhoBranco.Index = index;
                    modeloFilhoBranco.Id = 0;
                    modeloFilhoBranco.Usd = "0";
                    modeloFilhoBranco.Reais = 0;
                    modeloFilhoBranco.SaldoConferir = 0;
                    modeloFilhoBranco.Cambio = "";
                    modeloFilhoBranco.Tabela = tabela;
                    modeloFilhoBranco.IdServico = idServico;
                    modeloFilhoBranco.IndexPai = indexPai;
                    modeloFilhoBranco.Status = false;
                    modeloFilhoBranco.Modo = "novo";
                    modeloFilhoBranco.Login = "";


                    listaModeloGridFilho.Add(modeloFilhoBranco);
                }



                Con.Close();

                return listaModeloGridFilho;

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
                return null;
            }



        }

        #endregion

        protected void btnFiltroFileNbr_Click(object sender, EventArgs e)
        {
            try
            {

                preencheDataGrid();
                totalConferir();

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void VoltarMenu(object sender, EventArgs e)
        {
            Response.Redirect("~/Pages/Index.aspx");
        }

        protected void chkStatus_CheckedChanged(object sender, EventArgs e)
        {

            try
            {

                CheckBox chkStatus = (CheckBox)sender;
                GridViewRow row = (GridViewRow)chkStatus.NamingContainer;

                string id = row.Cells[11].Text;
                string tabela = row.Cells[12].Text;
                bool ftc = chkStatus.Checked;

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql = "";

                if (tabela.Equals("Transfers"))
                {
                    sql = "UPDATE File_Transfers SET FTC = @FTC ";
                    sql = sql + "WHERE File_Transf_id = @ID";
                }
                else
                {
                    if (tabela.Equals("ServExtra"))
                    {
                        sql = "UPDATE File_ServExtra SET FTC = @FTC ";
                        sql = sql + "WHERE File_ServExtra_id = @ID";
                    }
                    else
                    {
                        if (tabela.Equals("Tarifas"))
                        {
                            sql = "UPDATE File_Tarifas SET FTC = @FTC ";
                            sql = sql + "WHERE File_Tarifas_id = @ID";
                        }
                        else
                        {
                            if (tabela.Equals("Servico_Completo_File"))
                            {
                                sql = "UPDATE Servico_Completo_File SET FTC = @FTC ";
                                sql = sql + "WHERE ServicoCompletoFile_id = @ID";
                            }
                        }
                    }
                }

                Con.Open();


                SqlCommand cmd = new SqlCommand(sql, Con);

                cmd.Parameters.Add("@FTC", SqlDbType.Bit).Value = ftc;
                cmd.Parameters.Add("@ID", SqlDbType.Int).Value = id;


                cmd.ExecuteNonQuery();
                Con.Close();

                preencheDataGrid();
                totalConferir();

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }

        }

        protected double contarTotalPorTabelaIdServico(string tabela, string idServico)
        {
            try
            {

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;
                double total = 0;

                sql = " ";

                sql = sql + "; ";
                sql = sql + " SELECT SUM(Reais) Total FROM F_Conferencia";
                sql = sql + " WHERE tabela_referencia = '" + tabela + "'";
                sql = sql + " AND id_servico = " + idServico;
                sql = sql + " AND status = 0 ";


                Con.Open();
                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    if (reader["Total"].ToString() != "")
                    {
                        total = Convert.ToDouble(reader["Total"]);
                    }
                }

                Con.Close();
                return total;
            }
            catch (Exception)
            {

                throw;
            }



        }

        protected void somarValorConferir(string operacao, double valor, int idFatura)
        {
            try
            {

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                sql = " ";
                sql = sql + " UPDATE FaturaSupplier";
                if (operacao.Equals("soma"))
                {
                    sql = sql + " SET Fatura_Valor_Conferir = Fatura_Valor_Conferir + " + Convert.ToString(valor).Replace(",", ".");
                }
                else
                {
                    sql = sql + " SET Fatura_Valor_Conferir = Fatura_Valor_Conferir - " + Convert.ToString(valor).Replace(",", ".");
                }

                sql = sql + " WHERE Fatura_id = " + idFatura;

                Con.Open();

                SqlCommand cmd = new SqlCommand(sql, Con);
                cmd.ExecuteNonQuery();

                Con.Close();

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }


        }

        protected void txtValorConferir_TextChanged(object sender, EventArgs e)
        {

            CheckBox chkStatus = new CheckBox();
            TextBox txtBox = (TextBox)sender;
            GridViewRow row = (GridViewRow)txtBox.NamingContainer;

            string id = row.Cells[11].Text;
            string tabela = row.Cells[12].Text;
            double total = Convert.ToDouble(row.Cells[8].Text);
            double valorConferir = Convert.ToDouble(txtBox.Text);
            txtBox.Enabled = true;

            string data = DateTime.Now.ToString("yyyyMMdd HH:mm:ss");

            Usuario u = Session[Convert.ToString(Session["emailLogado"])] as Usuario;

            if ((Convert.ToDouble(txtSaldoConferir.Text) - valorConferir) < 0)
            {
                MostrarMsg("Valor maior que o saldo a conferir");
            }
            else
            {

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql = "";


                if (Convert.ToDouble(txtBox.Text) < 0)
                {
                    MostrarMsg("Valor conferir não pode ser negativo");
                    txtBox.Enabled = true;
                    txtBox.Focus();
                }
                else
                {
                    if (Convert.ToDouble(txtBox.Text) > Convert.ToDouble(txtSaldoConferir.Text))
                    {
                        MostrarMsg("Valor maior que o Saldo a Conferir");
                        txtBox.Enabled = true;
                        txtBox.Focus();

                    }
                    else
                    {

                        if (tabela.Equals("Transfers"))
                        {
                            sql = "UPDATE File_Transfers SET Valor_Conferir = @ValorConferir, Cambio = @Cambio WHERE File_Transf_id = @ID";
                        }
                        else
                        {
                            if (tabela.Equals("ServExtra"))
                            {
                                sql = "UPDATE File_ServExtra SET Valor_Conferir = @ValorConferir, Cambio = @Cambio WHERE File_ServExtra_id = @ID";
                            }
                            else
                            {
                                if (tabela.Equals("Tarifas"))
                                {
                                    sql = "UPDATE File_Tarifas SET Valor_Conferir = @ValorConferir, Cambio = @Cambio WHERE File_Tarifas_id = @ID";
                                }
                                else
                                {
                                    if (tabela.Equals("Servico_Completo_File"))
                                    {
                                        sql = "UPDATE Servico_Completo_File SET Valor_Conferir = @ValorConferir, Cambio = @Cambio WHERE ServicoCompletoFile_id = @ID";
                                    }
                                }
                            }
                        }


                        sql = sql + "; ";
                        sql = sql + " INSERT INTO F_Conferencia";
                        sql = sql + " (USD, Reais, tabela_referencia, id_servico, status, id_fatura, datahora, id_login, nome_file, tipo_conferencia)";
                        sql = sql + " Values (0, " + Convert.ToDouble(txtBox.Text) + ", '" + tabela + "', " + id + ", 0, " + Convert.ToInt32(txtInvoiceConferencia_id.Text) + ", '" + data + "', " + u.US_id + ", '" + txtFileNbr.Text + "', 'TOTAL')";

                        Con.Open();


                        SqlCommand cmd = new SqlCommand(sql, Con);

                        cmd.Parameters.Add("@ValorConferir", SqlDbType.Decimal).Value = valorConferir;
                        cmd.Parameters.Add("@Cambio", SqlDbType.Decimal).Value = valorConferir / total;
                        cmd.Parameters.Add("@ID", SqlDbType.Int).Value = id;
                        //cmd.Parameters.Add("@FTC", SqlDbType.Bit).Value = ftc;

                        cmd.ExecuteNonQuery();
                        Con.Close();

                        somarValorConferir("soma", valorConferir, Convert.ToInt32(txtInvoiceConferencia_id.Text));

                        preencheDataGrid();
                        totalConferir();
                    }
                }
            }

            //}

            //catch (Exception ex)
            //{
            //    System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);

            //    Log.Save((trace.GetFrame(0).GetMethod().ReflectedType.FullName), ("Linha: " + trace.GetFrame(0).GetFileLineNumber()), ("Column: " + trace.GetFrame(0).GetFileColumnNumber()), ex.Message);
            //    MostrarMsg(ex.Message);
            //}
        }

        protected void txtInvoice_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (!txtInvoice.Text.Equals(""))
                {

                    FaturaDAL fd = new FaturaDAL();

                    FaturaSupplier f = fd.PesquisarUmPorSupplier(txtInvoice.Text.Trim(), Convert.ToInt32(txtS_id.Text));
                    if (f != null)
                    {
                        txtInvoice_id.Text = f.Fatura_id.ToString();
                        PreencherTela(f);
                        pesquisaCheckBoxConferencia();
                        gridInfoConferencia.DataSource = consultaGridInfoConferencia(f.Fatura_id);
                        gridInfoConferencia.DataBind();
                    }
                    else
                    {
                        cmbMoeda.SelectedValue = "2";
                    }



                    DesbloqueiaTela();
                    dtEmissao.Focus();
                }
                else
                {
                    txtInvoice.Focus();
                }

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }


        }

        protected void btnCancelarFatura_Click(object sender, EventArgs e)
        {

            try
            {

                FaturaDAL fd = new FaturaDAL();
                FaturaSupplier cc = new FaturaSupplier();

                cc.Fatura_id = Convert.ToInt32(txtInvoice_id.Text);
                cc.Fatura_numero = BrancoNulo(txtInvoice.Text);
                cc.ClassificacaoContabil_id = Convert.ToInt32(cmbClassificacaoContabil.SelectedValue);
                cc.Moeda_id = Convert.ToInt32(cmbMoeda.SelectedValue);
                cc.CentroCusto_id = Convert.ToInt32(cmbCentroCusto.SelectedValue);
                cc.Supplier_id = Convert.ToInt32(txtS_id.Text);
                cc.TipoFatura_id = Convert.ToInt32(cmbTipoFatura.SelectedValue);
                //cc.Fatura_Cambio = Convert.ToInt32(BrancoNulo(txtCambio.Text));
                cc.Fatura_Comissoes = Convert.ToDecimal(BrancoNulo(txtComissoes.Text));
                cc.Fatura_Comissoes_Obs = txtObsComissoes.Text;
                //cc.Fatura_Deposito = Convert.ToInt32(BrancoNulo(txtDeposito.Text));
                //cc.Fatura_Deposito_Obs = txtObsDeposito.Text;
                cc.Fatura_Descontos = Convert.ToDecimal(BrancoNulo(txtDescontos.Text));
                cc.Fatura_Descontos_Obs = txtObsDescontos.Text;
                //cc.Fatura_Despesas = Convert.ToDecimal(BrancoNulo(txtDespesas.Text));
                //cc.Fatura_Despesas_Obs = txtObsDespesas.Text;
                cc.Fatura_Emissao = Convert.ToDateTime(BrancoNulo(dtEmissao.Text));
                cc.Fatura_Impostos = Convert.ToDecimal(BrancoNulo(txtImpostos.Text));
                cc.Fatura_Impostos_Obs = txtObsImpostos.Text;
                cc.Fatura_MoraDia = Convert.ToDecimal(BrancoNulo(txtMoraDia.Text));
                cc.Fatura_MoraDiaR = Convert.ToDecimal(BrancoNulo(txtMoraDiaR.Text));
                cc.Fatura_multa = Convert.ToDecimal(BrancoNulo(txtMulta.Text));
                //cc.Fatura_Pagamento = Convert.ToDateTime(BrancoNulo(dtPagamento.Text));
                cc.Fatura_Vencimento = Convert.ToDateTime(BrancoNulo(dtVencimento.Text));
                //cc.Fatura_VlrTotPagar = Convert.ToDecimal(BrancoNulo(txtTotPagar.Text));
                cc.Fatura_VlrTotServ = Convert.ToDecimal(BrancoNulo(txtVrTotServ.Text));
                cc.Fatura_Numero_Banco = txtNumeroBanco.Text;
                cc.Fatura_Agencia = txtAgencia.Text;
                cc.Fatura_Conta = txtConta.Text;
                cc.ObsGeral = txtObsGeral.Text;

                FaturaSupplier aux = fd.PesquisarUmPorSupplier(cc.Fatura_numero, Convert.ToInt32(cc.Supplier_id));
                if (aux != null)
                {
                    fd.CancelarFatura(cc);
                    MostrarMsg("Fatura cancelada com sucesso");
                }

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }

        }

        protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
        {

            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                string id = GridCadPais.DataKeys[e.Row.RowIndex]["id"].ToString();
                string tabela = GridCadPais.DataKeys[e.Row.RowIndex]["Tabela"].ToString();
                string index = GridCadPais.DataKeys[e.Row.RowIndex]["index"].ToString();
                CheckBox ckStatus = (CheckBox)e.Row.FindControl("chkStatus");
                //bool ftc = Convert.ToBoolean(GridCadPais.DataKeys[e.Row.RowIndex]["chkStatus"]);
                List<ModeloGridFilho> listaModeloGridFilho = preencheDataGridFilho(Convert.ToInt32(id), tabela, Convert.ToInt32(index), ckStatus.Checked);

                GridView gvOrders = e.Row.FindControl("gvOrders") as GridView;
                gvOrders.DataSource = listaModeloGridFilho;

                gvOrders.DataBind();

                foreach (GridViewRow item in gvOrders.Rows)
                {
                    foreach (ModeloGridFilho modelo in listaModeloGridFilho)
                    {
                        if (modelo.Index == item.RowIndex)
                        {
                            CheckBox ckBox = (CheckBox)item.FindControl("status");
                            ckBox.Checked = modelo.Status;

                            TextBox txtUsd = (TextBox)item.FindControl("txtUsd");
                            txtUsd.Text = modelo.Usd.ToString();

                            TextBox txtReais = (TextBox)item.FindControl("txtReais");
                            txtReais.Text = modelo.Reais.ToString();

                            Label lblCambio = (Label)item.FindControl("lblCambio");
                            lblCambio.Text = modelo.Cambio.ToString();


                            if (ckBox.Checked)
                            {
                                ckBox.Enabled = false;
                            }


                            if (modelo.Modo.Equals("novo"))
                            {
                                txtUsd.Enabled = true;
                                txtReais.Enabled = true;
                            }

                        }
                    }
                }

            }



        }

        protected void txtUsd_TextChanged(object sender, EventArgs e)
        {

            try
            {

                TextBox txtUsd = (TextBox)sender;
                GridViewRow row = (GridViewRow)txtUsd.NamingContainer;
                GridView gv = (GridView)row.NamingContainer;
                TextBox txtReais = new TextBox();
                CheckBox ckBox = new CheckBox();

                ckBox = (CheckBox)row.FindControl("status");
                txtReais = (TextBox)row.FindControl("txtReais");


                double reais = Convert.ToDouble(txtReais.Text);

                if ((Convert.ToDouble(txtSaldoConferir.Text) - Convert.ToDouble(txtReais.Text)) < 0)
                {
                    MostrarMsg("Valor maior que o saldo a conferir");
                }
                else
                {

                    if (reais != 0)
                    {

                        string modo = row.Cells[7].Text;
                        string idServico = row.Cells[6].Text;
                        string tabela = row.Cells[5].Text;
                        string id = row.Cells[4].Text;

                        F_Conferencia fc = new F_Conferencia();
                        F_ConferenciaDAL fcDal = new F_ConferenciaDAL();
                        fc.id_servico = Convert.ToInt32(idServico);
                        fc.Reais = Convert.ToDecimal(reais);
                        fc.USD = Convert.ToDecimal(txtUsd.Text);
                        fc.tabela_referencia = tabela;
                        fc.id = Convert.ToInt32(id);
                        fc.status = Convert.ToBoolean(ckBox.Checked);
                        fc.id_fatura = Convert.ToInt32(txtInvoiceConferencia_id.Text);
                        fc.datahora = DateTime.Now;
                        fc.nome_file = txtFileNbr.Text;
                        fc.tipo_conferencia = "PARCIAL".ToString();



                        Usuario u = Session[Convert.ToString(Session["emailLogado"])] as Usuario;

                        fc.id_login = u.US_id;

                        if (modo.Equals("novo"))
                        {
                            fcDal.inserir(fc);
                            somarValorConferir("soma", reais, Convert.ToInt32(txtInvoiceConferencia_id.Text));
                            preencheDataGrid();
                            totalConferir();
                            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "scr", "JavaScript:divexpandcollapse2('div" + row.Cells[6].Text + "', 'GridCadPais_gvOrders_" + row.Cells[8].Text + "_txtUsd_" + Convert.ToString(Convert.ToInt32(row.Cells[3].Text) + 1) + "');", true);
                        }
                        else
                        {
                            fcDal.alterar(fc);
                            preencheDataGrid();
                            totalConferir();
                        }

                    }
                    else
                    {
                        txtReais.Focus();
                    }
                }
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "scr", "JavaScript:divexpandcollapse3('div" + row.Cells[6].Text + "');", true);
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void txtReais_TextChanged(object sender, EventArgs e)
        {

            try
            {

                TextBox txtReais = (TextBox)sender;
                GridViewRow row = (GridViewRow)txtReais.NamingContainer;
                TextBox txtUsd = new TextBox();
                CheckBox ckBox = new CheckBox();

                ckBox = (CheckBox)row.FindControl("status");
                txtUsd = (TextBox)row.FindControl("txtUsd");

                double usd = Convert.ToDouble(txtUsd.Text);

                if ((Convert.ToDouble(txtSaldoConferir.Text) - Convert.ToDouble(txtReais.Text)) < 0)
                {
                    MostrarMsg("Valor maior que o saldo a conferir");
                }
                else
                {
                    if (usd != 0)
                    {
                        string modo = row.Cells[7].Text;
                        string idServico = row.Cells[6].Text;
                        string tabela = row.Cells[5].Text;
                        string id = row.Cells[4].Text;

                        F_Conferencia fc = new F_Conferencia();
                        F_ConferenciaDAL fcDal = new F_ConferenciaDAL();
                        fc.id_servico = Convert.ToInt32(idServico);
                        fc.Reais = Convert.ToDecimal(txtReais.Text);
                        fc.USD = Convert.ToDecimal(usd);
                        fc.tabela_referencia = tabela;
                        fc.id = Convert.ToInt32(id);
                        fc.status = Convert.ToBoolean(ckBox.Checked);
                        fc.id_fatura = Convert.ToInt32(txtInvoiceConferencia_id.Text);
                        fc.datahora = DateTime.Now;
                        fc.nome_file = txtFileNbr.Text;
                        fc.tipo_conferencia = "PARCIAL".ToString();

                        Usuario u = Session[Convert.ToString(Session["emailLogado"])] as Usuario;

                        fc.id_login = u.US_id;

                        if (modo.Equals("novo"))
                        {
                            fcDal.inserir(fc);
                            //somarValorConferir("soma", Convert.ToDouble(txtReais.Text), Convert.ToInt32(txtInvoiceConferencia_id.Text));
                            somarValorConferir("soma", Convert.ToDouble(txtReais.Text), Convert.ToInt32(txtInvoiceConferencia_id.Text));
                            preencheDataGrid();
                            totalConferir();
                            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "scr", "JavaScript:divexpandcollapse2('div" + row.Cells[6].Text + "', 'GridCadPais_gvOrders_" + row.Cells[8].Text + "_txtUsd_" + Convert.ToString(Convert.ToInt32(row.Cells[3].Text) + 1) + "');", true);
                        }
                        else
                        {
                            fcDal.alterar(fc);
                            preencheDataGrid();
                            totalConferir();
                        }
                    }

                    else
                    {
                        txtUsd.Focus();
                    }
                }
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "scr", "JavaScript:divexpandcollapse3('div" + row.Cells[6].Text + "');", true);

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }

        }

        protected void status_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                CheckBox ckBox = (CheckBox)sender;
                GridViewRow row = (GridViewRow)ckBox.NamingContainer;
                TextBox txtUsd = new TextBox();
                TextBox txtReais = new TextBox();

                txtUsd = (TextBox)row.FindControl("txtUsd");
                txtReais = (TextBox)row.FindControl("txtReais");

                double usd = Convert.ToDouble(txtUsd.Text);
                double reais = Convert.ToDouble(txtReais.Text);

                if (usd != 0 && reais != 0)
                {
                    string modo = row.Cells[7].Text;
                    string idServico = row.Cells[6].Text;
                    string tabela = row.Cells[5].Text;
                    string id = row.Cells[4].Text;

                    F_Conferencia fc = new F_Conferencia();
                    F_ConferenciaDAL fcDal = new F_ConferenciaDAL();
                    fc.id_servico = Convert.ToInt32(idServico);
                    fc.Reais = Convert.ToDecimal(txtReais.Text);
                    fc.USD = Convert.ToDecimal(usd);
                    fc.tabela_referencia = tabela;
                    fc.id = Convert.ToInt32(id);
                    fc.status = Convert.ToBoolean(ckBox.Checked);

                    if (!modo.Equals("novo"))
                    {
                        fcDal.alterar(fc);

                        F_Conferencia fcAux = fcDal.consultarPorId(fc.id);



                        if (!ckBox.Checked)
                        {
                            somarValorConferir("soma", reais, Convert.ToInt32(fcAux.id_fatura));
                        }
                        else
                        {
                            somarValorConferir("subtrair", reais, Convert.ToInt32(fcAux.id_fatura));
                        }


                        preencheDataGrid();
                        totalConferir();

                    }
                }

                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "scr", "JavaScript:divexpandcollapse3('div" + row.Cells[6].Text + "');", true);
            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }
        }

        protected void cancelado_CheckedChanged(object sender, EventArgs e)
        {
            try
            {





                CheckBox ckBox = (CheckBox)sender;
                GridViewRow row = (GridViewRow)ckBox.NamingContainer;
                TextBox txtValorConferir = (TextBox)row.FindControl("txtValorConferir");
                CheckBox ckFTC = (CheckBox)row.FindControl("chkStatus");


                if (ckBox.Checked)
                {

                    txtServico_id.Text = row.Cells[11].Text;
                    txtTabela.Text = row.Cells[12].Text;
                    txtCambioConferencia.Text = row.Cells[16].Text;
                    txtValorTotal.Text = txtValorConferir.Text;
                    txtIndexPai.Text = row.Cells[13].Text;
                    modalPopupExtenderConfirmarDesconferencia.Show();
                }
                else
                {

                    string idServico = row.Cells[11].Text;
                    string tabela = row.Cells[12].Text;
                    string cambioConferencia = row.Cells[16].Text;
                    double valorTotal = Convert.ToDouble(txtValorConferir.Text);
                    int indexPai = Convert.ToInt32(row.Cells[13].Text);

                    string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                    SqlConnection Con = new SqlConnection(pars[1]);
                    string sql;

                    Con.Open();

                    if (ckBox.Checked)
                    {
                        sql = " ";

                        if (tabela.Equals("Servico_Completo_File"))
                        {
                            sql = sql + " UPDATE Servico_Completo_File";
                        }
                        else
                        {
                            sql = sql + " UPDATE File_" + tabela;
                        }


                        //sql = sql + " UPDATE File_" + tabela;
                        sql = sql + " SET Cancelado = 1, FTC = 0";

                        if (tabela.Equals("Transfers"))
                        {
                            sql = sql + " WHERE File_Transf_id = " + idServico;
                        }
                        else
                        {

                            if (tabela.Equals("Servico_Completo_File"))
                            {
                                sql = sql + " WHERE ServicoCompletoFile_id = " + idServico;
                            }
                            else
                            {
                                sql = sql + " WHERE File_" + tabela + "_id = " + idServico;
                            }

                            //sql = sql + " WHERE File_" + tabela + "_id = " + idServico;
                        }


                        if (!ckFTC.Checked)
                        {

                            sql = sql + "; ";
                            sql = sql + " UPDATE F_Conferencia";
                            sql = sql + " SET status = 1";
                            sql = sql + " WHERE tabela_referencia = '" + tabela + "'";
                            sql = sql + " AND id_servico = " + idServico;
                            sql = sql + " AND status = 0";




                            //somarValorConferir("subtrair", item.Reais, item.IdFatura);
                        }
                        else
                        {
                            sql = sql + "; ";
                            sql = sql + " UPDATE F_Conferencia";
                            sql = sql + " SET status = 1";
                            sql = sql + " WHERE tabela_referencia = '" + tabela + "'";
                            sql = sql + " AND id_servico = " + idServico;

                            //valorTotal = valorTotal + contarTotalPorTabelaIdServico(tabela, idServico);                      

                        }

                        List<ModeloGridFilho> listaModeloGridFilho = preencheDataGridFilho(Convert.ToInt32(idServico), tabela, indexPai, ckFTC.Checked);

                        foreach (ModeloGridFilho item in listaModeloGridFilho)
                        {

                            if (!item.Status)
                            {
                                somarValorConferir("subtrair", item.Reais, item.IdFatura);
                            }


                        }



                    }
                    else
                    {




                        sql = " ";
                        //sql = sql + " UPDATE File_" + tabela;

                        if (tabela.Equals("Servico_Completo_File"))
                        {
                            sql = sql + " UPDATE Servico_Completo_File";
                        }
                        else
                        {
                            sql = sql + " UPDATE File_" + tabela;
                        }

                        sql = sql + " SET Cancelado = 0, Valor_Conferir = 0, FTC = 0, Cambio = 0";
                        if (tabela.Equals("Transfers"))
                        {
                            sql = sql + " WHERE File_Transf_id = " + idServico;
                        }
                        else
                        {

                            if (tabela.Equals("Servico_Completo_File"))
                            {
                                sql = sql + " WHERE ServicoCompletoFile_id = " + idServico;
                            }
                            else
                            {
                                sql = sql + " WHERE File_" + tabela + "_id = " + idServico;
                            }

                            //sql = sql + " WHERE File_" + tabela + "_id = " + idServico;
                        }

                    }

                    SqlCommand cmd = new SqlCommand(sql, Con);
                    cmd.ExecuteNonQuery();
                    Con.Close();

                    preencheDataGrid();
                    totalConferir();
                }



            }


            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void btnConferenciaMultipla_Click(object sender, EventArgs e)
        {
            try
            {


                double valorTotalConferenciaMultipla = 0;

                foreach (GridViewRow item in GridCadPais.Rows)
                {
                    CheckBox ckBox = (CheckBox)item.FindControl("conferenciaMultipla");
                    double txtValor = Convert.ToDouble(item.Cells[8].Text);

                    if (ckBox.Checked)
                    {
                        valorTotalConferenciaMultipla = valorTotalConferenciaMultipla + txtValor;
                    }
                }

                //if (Convert.ToDouble(BrancoZero(txtConferenciaMultiplaValor.Text)) <= valorTotalConferenciaMultipla && valorTotalConferenciaMultipla <= Convert.ToDouble(txtSaldoConferir.Text))
                if (Convert.ToDouble(BrancoZero(txtConferenciaMultiplaValor.Text)) <= valorTotalConferenciaMultipla)
                {
                    foreach (GridViewRow item in GridCadPais.Rows)
                    {
                        CheckBox ckBox = (CheckBox)item.FindControl("conferenciaMultipla");
                        //double txtValor = Convert.ToDouble(item.Cells[8].Text);
                        string txtSaldoConferirGridPai = item.Cells[15].Text;
                        double txtValor = (Convert.ToDouble(BrancoZero(txtConferenciaMultiplaValor.Text)) / valorTotalConferenciaMultipla) * Convert.ToDouble(txtSaldoConferirGridPai);
                        //decimal txtValorFormatado = Convert.TtxtValor; 
                        Int32 id = Convert.ToInt32(item.Cells[11].Text);
                        string txtNomeTabela = item.Cells[12].Text;

                        if (ckBox.Checked)
                        {

                            Usuario u = Session[Convert.ToString(Session["emailLogado"])] as Usuario;
                            string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                            SqlConnection Con = new SqlConnection(pars[1]);
                            string sql;

                            Con.Open();

                            sql = " ";

                            if (txtNomeTabela.Equals("Servico_Completo_File"))
                            {
                                sql = sql + " UPDATE Servico_Completo_File";
                                sql = sql + " SET Valor_Conferir = " + String.Format("{0:0.000000}", txtValor).Replace(",", ".");
                                sql = sql + " WHERE ServicoCompletoFile_id = " + id;
                            }
                            else
                            {
                                if (txtNomeTabela.Equals("File_Transfers"))
                                {
                                    sql = sql + " UPDATE File_" + txtNomeTabela;
                                    sql = sql + " SET Valor_Conferir = " + String.Format("{0:0.000000}", txtValor).Replace(",", ".");
                                    sql = sql + " WHERE File_Transf_id = " + id;
                                }
                                else
                                {
                                    sql = sql + " UPDATE File_" + txtNomeTabela;
                                    sql = sql + " SET Valor_Conferir = " + String.Format("{0:0.000000}", txtValor).Replace(",", ".");
                                    sql = sql + " WHERE File_" + txtNomeTabela + "_id = " + id;
                                }
                            }


                            sql = sql + "; ";
                            sql = sql + " INSERT INTO F_Conferencia";
                            sql = sql + " (USD, Reais, tabela_referencia, id_servico, status, id_fatura, datahora, id_login, nome_file)";
                            sql = sql + " Values (0, " + String.Format("{0:0.000000}", txtValor).Replace(",", ".") + ", '" + txtNomeTabela + "', " + id + ", 0, " + Convert.ToInt32(txtInvoiceConferencia_id.Text) + ", '" + DateTime.Now + "', " + u.US_id + ", '" + txtFileNbr.Text + "')";

                            SqlCommand cmd = new SqlCommand(sql, Con);
                            cmd.ExecuteNonQuery();
                            Con.Close();
                            somarValorConferir("soma", Convert.ToDouble(txtValor), Convert.ToInt32(txtInvoiceConferencia_id.Text));
                        }
                    }

                    preencheDataGrid();
                    totalConferir();
                }
                else
                {
                    MostrarMsg("Valor não bate ou maior que total a conferir");

                }


            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }


        }

        #endregion

        #region ModeloGrid

        public class ModeloGrid
        {

            private int id;
            public int Id
            {
                get { return id; }
                set { id = value; }
            }

            private string tabela;
            public string Tabela
            {
                get { return tabela; }
                set { tabela = value; }
            }

            private string pax;
            public string Pax
            {
                get { return pax; }
                set { pax = value; }
            }

            private string dataI;
            public string DataI
            {
                get { return dataI; }
                set { dataI = value; }
            }

            private string dataO;
            public string DataO
            {
                get { return dataO; }
                set { dataO = value; }
            }

            private string nomeServico;
            public string NomeServico
            {
                get { return nomeServico; }
                set { nomeServico = value; }
            }

            private double total;
            public double Total
            {
                get { return total; }
                set { total = value; }
            }

            private string suppPayingPax;
            public string SuppPayingPax
            {
                get { return suppPayingPax; }
                set { suppPayingPax = value; }
            }

            private string dataFrom;
            public string DataFrom
            {
                get { return dataFrom; }
                set { dataFrom = value; }
            }

            private string dataTo;
            public string DataTo
            {
                get { return dataTo; }
                set { dataTo = value; }
            }

            private string moeda;
            public string Moeda
            {
                get { return moeda; }
                set { moeda = value; }
            }

            private int index;
            public int Index
            {
                get { return index; }
                set { index = value; }
            }

            private double valorConferir;
            public double ValorConferir
            {
                get { return valorConferir; }
                set { valorConferir = value; }
            }

            private double cambio;
            public double Cambio
            {
                get { return cambio; }
                set { cambio = value; }
            }

            private bool conferenciaMultipla;
            public bool ConferenciaMultipla
            {
                get { return conferenciaMultipla; }
                set { conferenciaMultipla = value; }
            }

            private bool ftc;
            public bool Ftc
            {
                get { return ftc; }
                set { ftc = value; }
            }

            private double saldoConferir;
            public double SaldoConferir
            {
                get { return saldoConferir; }
                set { saldoConferir = value; }
            }

            private bool cancelado;
            public bool Cancelado
            {
                get { return cancelado; }
                set { cancelado = value; }
            }

            private double cambioConferencia;
            public double CambioConferencia
            {
                get { return cambioConferencia; }
                set { cambioConferencia = value; }
            }
        }

        #endregion

        #region ModeloGridFilho

        public class ModeloGridFilho
        {

            private int id;
            public int Id
            {
                get { return id; }
                set { id = value; }
            }

            private string usd;
            public string Usd
            {
                get { return usd; }
                set { usd = value; }
            }

            private double reais;
            public double Reais
            {
                get { return reais; }
                set { reais = value; }
            }

            private double saldoConferir;
            public double SaldoConferir
            {
                get { return saldoConferir; }
                set { saldoConferir = value; }
            }

            private string tabela;
            public string Tabela
            {
                get { return tabela; }
                set { tabela = value; }
            }

            private int idServiço;
            public int IdServiço
            {
                get { return idServiço; }
                set { idServiço = value; }
            }

            private int index;
            public int Index
            {
                get { return index; }
                set { index = value; }
            }

            private string cambio;
            public string Cambio
            {
                get { return cambio; }
                set { cambio = value; }
            }

            private int idServico;
            public int IdServico
            {
                get { return idServico; }
                set { idServico = value; }
            }

            private string modo;
            public string Modo
            {
                get { return modo; }
                set { modo = value; }
            }

            private int indexPai;
            public int IndexPai
            {
                get { return indexPai; }
                set { indexPai = value; }
            }

            private bool status;
            public bool Status
            {
                get { return status; }
                set { status = value; }
            }

            private DateTime data;
            public DateTime Data
            {
                get { return data; }
                set { data = value; }
            }

            private string login;
            public string Login
            {
                get { return login; }
                set { login = value; }
            }

            private string tipo_conferencia;
            public string Tipo_conferencia
            {
                get { return tipo_conferencia; }
                set { tipo_conferencia = value; }
            }

            private int idFatura;
            public int IdFatura
            {
                get { return idFatura; }
                set { idFatura = value; }
            }



        }

        #endregion

        #region ModeloInfoConferencia

        public class ModeloInfoConferencia
        {

            private string numeroFile;
            public string NumeroFile
            {
                get { return numeroFile; }
                set { numeroFile = value; }
            }

            private string valorReaisTotal;
            public string ValorReaisTotal
            {
                get { return valorReaisTotal; }
                set { valorReaisTotal = value; }
            }

        }

        #endregion

        #region ModeloGridConciliacaoBancaria

        public class ModeloGridConciliacaoBancaria
        {

            private int id;
            public int Id
            {
                get { return id; }
                set { id = value; }
            }

            private string lancamento;
            public string Lancamento
            {
                get { return lancamento; }
                set { lancamento = value; }
            }

            private string historico;
            public string Historico
            {
                get { return historico; }
                set { historico = value; }
            }

            private string tipoLancamento;
            public string TipoLancamento
            {
                get { return tipoLancamento; }
                set { tipoLancamento = value; }
            }

            private string tipoPagamento;
            public string TipoPagamento
            {
                get { return tipoPagamento; }
                set { tipoPagamento = value; }
            }

            private double valorPago;
            public double ValorPago
            {
                get { return valorPago; }
                set { valorPago = value; }
            }

            private double valorParcial;
            public double ValorParcial
            {
                get { return valorParcial; }
                set { valorParcial = value; }
            }

            private DateTime ord;
            public DateTime Ord
            {
                get { return ord; }
                set { ord = value; }
            }

            private string tabela;
            public string Tabela
            {
                get { return tabela; }
                set { tabela = value; }
            }

            private int idConta;
            public int IdConta
            {
                get { return idConta; }
                set { idConta = value; }
            }

            private string grupo;
            public string Grupo
            {
                get { return grupo; }
                set { grupo = value; }
            }

            private string numeroCheque;
            public string NumeroCheque
            {
                get { return numeroCheque; }
                set { numeroCheque = value; }
            }


        }

        #endregion

        #region ModeloBaixaFaturaSumario

        public class ModeloBaixaFaturaSumario
        {

            private string nome;
            public string Nome
            {
                get { return nome; }
                set { nome = value; }
            }

            private double valor;
            public double Valor
            {
                get { return valor; }
                set { valor = value; }
            }

        }


        #endregion

        protected void btnSalvarBancoTabelas_Click(object sender, EventArgs e)
        {

            try
            {

                if (!txtNumeroBancoTabelas.Text.Equals("") && !txtNomeBancoTabelas.Text.Equals("") && !txtRazaoSocialTabelas.Text.Equals(""))
                {
                    F_Banco fb = new F_Banco();
                    fb.Nome = txtNomeBancoTabelas.Text;
                    fb.Numero = txtNumeroBancoTabelas.Text;
                    fb.Razao_Social = txtRazaoSocialTabelas.Text;

                    F_BancoDAL fbDAL = new F_BancoDAL();

                    fbDAL.inserir(fb);

                    PopularNomeBanco();
                    MostrarMsg("Banco salvo com sucesso");

                }

            }
            catch (Exception)
            {

                throw;
            }

        }

        protected void btnSalvarAgenciaTabelas_Click(object sender, EventArgs e)
        {
            try
            {

                if (!txtNumeroAgenciaTabelas.Text.Equals("") && !txtNomeAgenciaTabelas.Text.Equals("") && !Convert.ToString(cmbNomeBanco.SelectedValue).Equals("0"))
                {
                    F_Agencia fa = new F_Agencia();
                    fa.Nome = txtNomeAgenciaTabelas.Text;
                    fa.Numero = txtNumeroAgenciaTabelas.Text;
                    fa.id_Banco = Convert.ToInt32(cmbNomeBanco.SelectedValue);

                    F_AgenciaDAL faDAL = new F_AgenciaDAL();

                    faDAL.inserir(fa);
                    PopularNumeroAgencia();
                    MostrarMsg("Agencia salva com sucesso");
                }

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void btnSalvarContaTabelas_Click(object sender, EventArgs e)
        {
            try
            {
                F_Conta fc = new F_Conta();
                fc.Numero = txtNumeroContaTabelas.Text;
                fc.Nome = txtNomeContaTabelas.Text;
                fc.id_Agencia = Convert.ToInt32(cmbNumeroAgencia.SelectedValue);
                fc.id_Moeda = Convert.ToInt32(cmbMoedaTabelas.SelectedValue);

                F_ContaDAL fcDAL = new F_ContaDAL();

                fcDAL.inserir(fc);

                MostrarMsg("Conta salva com sucesso");
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void btnFiltroBanco_Click(object sender, EventArgs e)
        {
            
        }

        protected void btnFiltroAgencia_Click(object sender, EventArgs e)
        {
            
        }

        protected void btnFiltroConta_Click(object sender, EventArgs e)
        {
            try
            {

                F_Conta fc = new F_Conta();
                F_ContaDAL fcDAL = new F_ContaDAL();

                fc = fcDAL.pesquisarPorNumeroConta(txtContaPagamento.Text);
                txtAgenciaPagamento.Text = fc.F_Agencia.Numero;
                txtBancoPagamento.Text = fc.F_Agencia.F_Banco.Nome;


            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void montarGridPagarFaturas()
        {
            try
            {



                txtValorTotalPagarBaixaFatura.Text = "";

                FaturaDAL fdal = new FaturaDAL();
                FaturaSupplier fs = new FaturaSupplier();


                List<FaturaSupplier> listaFaturaSupplier = new List<FaturaSupplier>();
                listaFaturaSupplier = fdal.PesquisarTodosPorData(Convert.ToDateTime(txtDataInicial.Text), Convert.ToDateTime(txtDataFinal.Text));

                gridPagarFaturas.DataSource = listaFaturaSupplier;
                gridPagarFaturas.DataBind();

                foreach (GridViewRow item in gridPagarFaturas.Rows)
                {

                    TextBox txtGridPagarFaturasConferencia = (TextBox)item.FindControl("txtGridPagarFaturasConferencia");
                    TextBox txtGridPagarFaturasDestinatario = (TextBox)item.FindControl("txtGridPagarFaturasDestinatario");

                    FaturaSupplier fss = fdal.PesquisarUmPorId(Convert.ToInt32(item.Cells[9].Text));
                    txtGridPagarFaturasDestinatario.Text = fss.Supplier.S_razaosocial;

                    //txtGridPagarFaturasDestinatario.Text = item.Cells[11].Text;

                    CheckBox chkBoxPagar = (CheckBox)item.FindControl("chkGridPagarFaturaConferencia");

                    if (!item.Cells[4].Text.Equals("") && !item.Cells[4].Text.Equals("&nbsp;") && !item.Cells[3].Text.Equals("") && !item.Cells[3].Text.Equals("&nbsp;") && !item.Cells[10].Text.Equals("") && !item.Cells[10].Text.Equals("&nbsp;"))
                    {
                        if (Convert.ToDouble(item.Cells[4].Text) == Convert.ToDouble(item.Cells[10].Text))
                        {
                            txtGridPagarFaturasConferencia.Text = "TC";
                        }
                        else
                        {
                            if (Convert.ToDouble(item.Cells[4].Text) > 0)
                            {
                                txtGridPagarFaturasConferencia.Text = "PC";
                            }
                            else
                            {
                                txtGridPagarFaturasConferencia.Text = "N/C";
                            }
                        }

                    }

                    if (!txtGridPagarFaturasConferencia.Text.Equals("TC") && item.Cells[12].Text.Trim().Equals("1"))
                    {
                        chkBoxPagar.Enabled = false;
                    }

                }

            }
            catch (Exception)
            {

                throw;
            }

        }

        protected void btnMostrarFaturas_Click(object sender, EventArgs e)
        {
            try
            {

                if (!txtDataInicial.Text.Equals("") && !txtDataFinal.Text.Equals(""))
                {

                    montarGridPagarFaturas();
                    gridPagarFaturasSumario.DataBind();

                }


            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }
        }

        protected void chkGridPagarFaturaConferencia_CheckedChanged(object sender, EventArgs e)
        {


            CheckBox ckBox = (CheckBox)sender;
            GridViewRow row = (GridViewRow)ckBox.NamingContainer;
            double valor = Convert.ToDouble(row.Cells[3].Text);

            if (ckBox.Checked)
            {
                txtValorTotalPagarBaixaFatura.Text = Convert.ToString(Convert.ToDouble(BrancoNulo(txtValorTotalPagarBaixaFatura.Text)) + valor);
            }
            else
            {
                txtValorTotalPagarBaixaFatura.Text = Convert.ToString(Convert.ToDouble(BrancoNulo(txtValorTotalPagarBaixaFatura.Text)) - valor);
            }


        }

        protected void btnPagarBaixaFatura_Click(object sender, EventArgs e)
        {

            try
            {

                if (rdTipoPagamento.Text.Equals(""))
                {
                    MostrarMsg("Escolha a forma de pagamento");
                }
                else
                {
                    if (!rdTipoPagamento.Text.Equals("cheque"))
                    {
                        lblNumeroDoChequeBaixaFatura.Visible = false;
                        txtNumeroDoChequeBaixaFatura.Visible = false;
                    }
                    else
                    {
                        lblNumeroDoChequeBaixaFatura.Visible = true;
                        txtNumeroDoChequeBaixaFatura.Visible = true;
                    }

                    modalPopupExtenderConfirmarBaixaFatura.Show();

                }





            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }


        }

        protected void txtContaPagamento_TextChanged(object sender, EventArgs e)
        {
            try
            {

                F_Conta fc = new F_Conta();
                F_ContaDAL fcDAL = new F_ContaDAL();

                fc = fcDAL.pesquisarPorNumeroConta(txtContaPagamento.Text);
                txtContaPagamento_id.Text = fc.id.ToString();
                txtAgenciaPagamento.Text = fc.F_Agencia.Numero;
                txtBancoPagamento.Text = fc.F_Agencia.F_Banco.Nome;

                


            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void btnFiltroBancoConciliacao_Click(object sender, EventArgs e)
        {
            
        }

        protected void btnFiltroAgenciaConciliacao_Click(object sender, EventArgs e)
        {
            
        }

        protected void btnFiltroContaConciliacao_Click(object sender, EventArgs e)
        {
            try
            {

                F_Conta fc = new F_Conta();
                F_ContaDAL fcDAL = new F_ContaDAL();

                fc = fcDAL.pesquisarPorNumeroConta(txtContaConciliacao.Text);
                txtAgenciaConciliacao.Text = fc.F_Agencia.Numero;
                txtBancoConciliacao.Text = fc.F_Agencia.F_Banco.Nome;

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void txtContaConciliacao_TextChanged(object sender, EventArgs e)
        {
            try
            {

                F_Conta fc = new F_Conta();
                F_ContaDAL fcDAL = new F_ContaDAL();

                fc = fcDAL.pesquisarPorNumeroConta(txtContaConciliacao.Text);
                txtAgenciaConciliacao.Text = fc.F_Agencia.Numero;
                txtBancoConciliacao.Text = fc.F_Agencia.F_Banco.Nome;

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void btnSalvarConciliacao_Click(object sender, EventArgs e)
        {
            try
            {

                CentroCustoDAL ccDAL = new CentroCustoDAL();
                ClassificacaoContabilDAL classificacaoContabilDAL = new ClassificacaoContabilDAL();

                if (ccDAL.pesquisarPorId(Convert.ToInt32(cmbCentroCustoConciliacao.Text)).CentroCusto_id.ToString().Equals("1") || classificacaoContabilDAL.ConsultarPorId(Convert.ToInt32(cmbClassificacaoContabilConciliacao.Text)).ClassificacaoContabil_nome.Trim().Equals("FORNECEDORES"))
                {
                    MostrarMsg("Centro de Custo Operacional e Classificação Contabil do tipo Fornecedores não podem ser incluidos de forma manual");
                }
                else
                {


                    F_Conta fc = new F_Conta();
                    F_ContaDAL fcDAL = new F_ContaDAL();

                    fc = fcDAL.pesquisarPorNumeroConta(txtContaConciliacao.Text);

                    Pagamento_Manual pm = new Pagamento_Manual();
                    PagamentoManualDAL pmDAL = new PagamentoManualDAL();
                    Usuario u = Session[Convert.ToString(Session["emailLogado"])] as Usuario;

                    pm.id_conta = Convert.ToInt32(fc.id);
                    pm.id_moeda = Convert.ToInt32(cmbMoedaConciliacao.Text);
                    pm.id_centro_custo = Convert.ToInt32(cmbCentroCustoConciliacao.Text);
                    pm.id_classificacao_contabil = Convert.ToInt32(cmbClassificacaoContabilConciliacao.Text);
                    pm.valor_pago = Convert.ToDecimal(txtValorConciliacao.Text);


                    pm.historico = txtHistoricoConciliacao.Text;
                    pm.data_lancamento = DateTime.Now;
                    pm.data = Convert.ToDateTime(txtDataConciliacao.Text);
                    pm.id_login = u.US_id;
                    pm.tipo_lancamento = rdButtonTipoLancamento.Text;

                    pmDAL.inserir(pm);

                    recalcularValorConciliacaoBancaria(fcDAL.pesquisarPorNumeroConta(txtContaConciliacao.Text).id);

                    preencheGridConciliacao(fcDAL.pesquisarPorNumeroConta(txtContaConciliacao.Text).id, Convert.ToDateTime(txtDataConciliacao.Text));

                    MostrarMsg("Lançamento cadastrado com sucesso");

                }
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void btnExcluirConciliacao_Click(object sender, EventArgs e)
        {

            btnFecharPainelModalExcluirLancamento.Focus();

            if (txtTabelaConciliacao_id.Text.Equals("Fatura_Supplier_Pagamento"))
            {
                lblModalConfirmarExcluirLancamento.Text = "Ao excluir este lançamento as faturas voltarão a estar disponíveis para pagamento, confirma?";
            }
            else
            {
                lblModalConfirmarExcluirLancamento.Text = "A exclusão não pode ser desfeita, confirma?";
            }

            modalPopupExtenderConfirmarExcluirLancamento.Show();

        }

        protected void txtDataConciliacao_TextChanged(object sender, EventArgs e)
        {

            try
            {
                if (!txtContaConciliacao.Text.Equals(""))
                {
                    F_ContaDAL fcDAL = new F_ContaDAL();

                    preencheGridConciliacao(fcDAL.pesquisarPorNumeroConta(txtContaConciliacao.Text).id, Convert.ToDateTime(txtDataConciliacao.Text));
                }
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void preencheGridConciliacao(int idConta, DateTime data)
        {
            try
            {
                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                string datefm = Convert.ToDateTime(data).ToString("yyyyMMdd");
                string datefmtrat = "'" + datefm + "'";

                sql = " ";
                sql = sql + "SELECT fsp.id,'Automatico' as Lancamento, '' as Historico,'Debito' as TipoLancamento, fsp.tipo_pagamento as TipoPagamento, fsp.valor_pago as ValorPago, fsp.saldo_parcial as valorParcial,fsp.data as ord, 'Fatura_Supplier_Pagamento' as Tabela, fsp.id_Conta as IdConta, fsp.grupo as Grupo, fsp.data_lancamento, fsp.numero_cheque AS numeroCheque ";
                sql = sql + "FROM Fatura_Supplier_Pagamento fsp ";
                sql = sql + "WHERE fsp.id_Conta = " + idConta;
                //sql = sql + "AND CONVERT(nvarchar(10), fsp.data, 103) = '" + data.ToString("dd/MM/yyyy") + "'";
                sql = sql + "AND CONVERT(nvarchar(10), fsp.data, 112) = " + datefmtrat;


                sql = sql + "UNION ALL ";

                sql = sql + "SELECT pm.id, 'Manual' as Lancamento, pm.historico as Historico, pm.tipo_lancamento as TipoLancamento, '' as TipoPagamento, pm.valor_pago as ValorPago, pm.saldo_parcial as valorParcial, pm.data as ord, 'Pagamento_Manual' AS Tabela, pm.id_conta as IdConta, '' as Grupo, pm.data_lancamento, '' AS numeroCheque ";
                sql = sql + "FROM Pagamento_Manual pm ";
                sql = sql + "INNER JOIN C_ClassificacaoContabil cc ON cc.ClassificacaoContabil_id = pm.id_classificacao_contabil ";
                sql = sql + "WHERE pm.id_Conta = " + idConta;
                //sql = sql + "AND CONVERT(nvarchar(10), pm.data, 103) = '" + data.ToString("dd/MM/yyyy") + "'";
                sql = sql + "AND CONVERT(nvarchar(10), pm.data, 112) = " + datefmtrat;

                sql = sql + "order by data_lancamento ";

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                List<ModeloGridConciliacaoBancaria> listaModeloGridConciliacaoBancaria = new List<ModeloGridConciliacaoBancaria>();
                ModeloGridConciliacaoBancaria modeloGridConciliacaoBancaria;

                while (reader.Read())
                {
                    modeloGridConciliacaoBancaria = new ModeloGridConciliacaoBancaria();

                    modeloGridConciliacaoBancaria.Id = Convert.ToInt32(reader["id"]);
                    modeloGridConciliacaoBancaria.IdConta = Convert.ToInt32(reader["IdConta"]);
                    modeloGridConciliacaoBancaria.Lancamento = reader["Lancamento"].ToString();
                    modeloGridConciliacaoBancaria.Historico = reader["Historico"].ToString();
                    modeloGridConciliacaoBancaria.TipoLancamento = reader["TipoLancamento"].ToString();
                    modeloGridConciliacaoBancaria.TipoPagamento = reader["TipoPagamento"].ToString();
                    modeloGridConciliacaoBancaria.ValorPago = Convert.ToDouble(reader["ValorPago"]);
                    modeloGridConciliacaoBancaria.ValorParcial = Convert.ToDouble(reader["valorParcial"]);
                    modeloGridConciliacaoBancaria.Ord = Convert.ToDateTime(reader["ord"]);
                    modeloGridConciliacaoBancaria.Tabela = reader["Tabela"].ToString();
                    modeloGridConciliacaoBancaria.IdConta = Convert.ToInt32(reader["IdConta"]);
                    modeloGridConciliacaoBancaria.Grupo = reader["Grupo"].ToString();
                    modeloGridConciliacaoBancaria.NumeroCheque = reader["numeroCheque"].ToString();

                    listaModeloGridConciliacaoBancaria.Add(modeloGridConciliacaoBancaria);

                }

                grdConciliacao.DataSource = listaModeloGridConciliacaoBancaria;
                grdConciliacao.DataBind();
                Con.Close();
            }
            catch (Exception)
            {

                throw;
            }


        }

        protected void grdConciliacao_RowDataBound(object sender, GridViewRowEventArgs e)
        {

            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                string id = grdConciliacao.DataKeys[e.Row.RowIndex]["id"].ToString();
                string tabela = grdConciliacao.DataKeys[e.Row.RowIndex]["Tabela"].ToString();
                string idConta = grdConciliacao.DataKeys[e.Row.RowIndex]["IdConta"].ToString();
                string grupo = grdConciliacao.DataKeys[e.Row.RowIndex]["Grupo"].ToString();


                List<FaturaSupplier> listaFaturaSupplier = new List<FaturaSupplier>();
                FaturaDAL fsDAL = new FaturaDAL();

                if (tabela.Equals("Fatura_Supplier_Pagamento"))
                {
                    listaFaturaSupplier = fsDAL.PesquisarTodosPorGrupo(Convert.ToInt32(grupo));
                    GridView subGrdConciliacao = e.Row.FindControl("subGrdConciliacao") as GridView;
                    subGrdConciliacao.DataSource = listaFaturaSupplier;
                    subGrdConciliacao.DataBind();

                }

            }

        }

        protected void EditarConciliacao_Command(object sender, CommandEventArgs e)
        {

            try
            {

                string[] pars = e.CommandArgument.ToString().Split(',');

                txtFaturaConciliacao_id.Text = pars[0].ToString();
                txtTabelaConciliacao_id.Text = pars[1].ToString();

                if (txtTabelaConciliacao_id.Text.Equals("Fatura_Supplier_Pagamento"))
                {

                    Fatura_Supplier_Pagamento fsp = new Fatura_Supplier_Pagamento();
                    FaturaSupplierPagamentoDAL fspDAL = new FaturaSupplierPagamentoDAL();
                    ClassificacaoContabilDAL ccDAL = new ClassificacaoContabilDAL();
                    CentroCustoDAL centroCustoDAL = new CentroCustoDAL();
                    TipoFaturaDAL tipoFaturaDAL = new TipoFaturaDAL();

                    fsp = fspDAL.PesquisarPorId(Convert.ToInt32(txtFaturaConciliacao_id.Text));

                    cmbClassificacaoContabilConciliacao.SelectedValue = ccDAL.ConsultarPorNome("FORNECEDORES").ClassificacaoContabil_id.ToString();
                    cmbCentroCustoConciliacao.SelectedValue = centroCustoDAL.pesquisarPorId(1).CentroCusto_id.ToString();
                    cmbMoedaConciliacao.SelectedValue = "3";

                    txtDataConciliacao.Text = string.Format("{0:dd/MM/yyyy}", fsp.data);
                    txtValorConciliacao.Text = fsp.valor_pago.ToString();

                    txtHistoricoConciliacao.Text = fsp.historico;
                    rdButtonTipoLancamento.SelectedValue = "debito";

                    btnSalvarConciliacao.Visible = false;
                    btnExcluirConciliacao.Visible = true;
                    btnAlterarConciliacao.Visible = false;
                    btnNovaConciliacao.Visible = true;

                }
                else
                {

                    Pagamento_Manual pm = new Pagamento_Manual();
                    PagamentoManualDAL pmDAL = new PagamentoManualDAL();

                    pm = pmDAL.pesquisarPorId(Convert.ToInt32(txtFaturaConciliacao_id.Text));

                    cmbClassificacaoContabilConciliacao.SelectedValue = pm.id_classificacao_contabil.ToString();
                    cmbCentroCustoConciliacao.SelectedValue = pm.id_centro_custo.ToString();

                    txtDataConciliacao.Text = string.Format("{0:dd/MM/yyyy}", pm.data);
                    txtValorConciliacao.Text = pm.valor_pago.ToString();
                    txtHistoricoConciliacao.Text = pm.historico;

                    rdButtonTipoLancamento.SelectedValue = pm.tipo_lancamento;

                    btnSalvarConciliacao.Visible = false;
                    btnExcluirConciliacao.Visible = true;
                    btnAlterarConciliacao.Visible = true;
                    btnNovaConciliacao.Visible = true;

                }



                foreach (GridViewRow item in grdConciliacao.Rows)
                {

                    if (item.Cells[1].Text.Equals(txtFaturaConciliacao_id.Text.ToString()) && item.Cells[11].Text.Equals(txtTabelaConciliacao_id.Text))
                    {
                        LinkButton editarConciliacao = (LinkButton)item.FindControl("EditarConciliacao");
                        editarConciliacao.ForeColor = System.Drawing.Color.Red;
                    }
                    else
                    {
                        LinkButton editarConciliacao = (LinkButton)item.FindControl("EditarConciliacao");
                        editarConciliacao.ForeColor = System.Drawing.Color.Black;
                    }

                }
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }

        }

        protected void btnNovaConciliacao_Click(object sender, EventArgs e)
        {
            try
            {

                cmbClassificacaoContabilConciliacao.SelectedValue = "0";
                cmbCentroCustoConciliacao.SelectedValue = "0";

                txtDataConciliacao.Text = "";
                txtValorConciliacao.Text = "";

                txtHistoricoConciliacao.Text = "";
                rdButtonTipoLancamento.SelectedValue = "";
                txtBancoConciliacao.Text = "";
                txtAgenciaConciliacao.Text = "";
                txtContaConciliacao.Text = "";

                grdConciliacao.DataBind();

                btnSalvarConciliacao.Visible = true;
                btnExcluirConciliacao.Visible = false;
                btnAlterarConciliacao.Visible = false;
                btnNovaConciliacao.Visible = false;

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }


        }

        protected void btnAlterarConciliacao_Click(object sender, EventArgs e)
        {

            if (txtTabelaConciliacao_id.Text.Equals("Fatura_Supplier_Pagamento"))
            {





            }
            else
            {

                Usuario u = Session[Convert.ToString(Session["emailLogado"])] as Usuario;

                PagamentoManualDAL pmDAL = new PagamentoManualDAL();
                Pagamento_Manual pm = pmDAL.pesquisarPorId(Convert.ToInt32(txtFaturaConciliacao_id.Text));
                pm.id_login = u.US_id;
                pm.id_moeda = Convert.ToInt32(cmbMoedaConciliacao.SelectedValue);
                pm.tipo_lancamento = rdButtonTipoLancamento.SelectedValue;
                pm.id_centro_custo = Convert.ToInt32(cmbCentroCustoConciliacao.SelectedValue);
                pm.id_classificacao_contabil = Convert.ToInt32(cmbClassificacaoContabilConciliacao.SelectedValue);
                pm.historico = txtHistoricoConciliacao.Text;
                pm.data = Convert.ToDateTime(txtDataConciliacao.Text);
                pm.valor_pago = Convert.ToDecimal(txtValorConciliacao.Text);

                pmDAL.alterar(pm);

                recalcularValorConciliacaoBancaria(Convert.ToInt32(pm.id_conta));

                preencheGridConciliacao(Convert.ToInt32(pm.id_conta), Convert.ToDateTime(pm.data));

                MostrarMsg("Lançamento alterado com sucesso");

            }
        }

        protected double pegaUltimoValorParcialAnteriorAoDia(DateTime data, int idConta)
        {

            try
            {

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = " ";
                sql = sql + " SELECT saldo_parcial, data_lancamento FROM Pagamento_Manual";
                sql = sql + " WHERE ID = (SELECT MAX(id) saldo_parcial FROM Pagamento_Manual where id_conta = " + idConta + " and data < '" + string.Format("{0:yyyyMMdd}", data) + "')";

                sql = sql + " UNION ALL";

                sql = sql + " SELECT saldo_parcial, data_lancamento FROM Fatura_Supplier_Pagamento";
                sql = sql + " WHERE ID = (SELECT MAX(ID) saldo_parcial FROM Fatura_Supplier_Pagamento where id_Conta = " + idConta + " and data < '" + string.Format("{0:yyyyMMdd}", data) + "')";

                sql = sql + " ORDER BY data_lancamento asc";

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                double ValorRetornado = 0;

                while (reader.Read())
                {
                    ValorRetornado = Convert.ToDouble(reader["saldo_parcial"]);
                }

                Con.Close();

                return ValorRetornado;

            }
            catch
            {
                throw;
            }


        }

        protected void recalcularValorIncluirFatura(object sender, EventArgs e)
        {

            try
            {

                txtDescontos.Text = Decimal.Parse(BrancoZero(txtDescontos.Text)).ToString("N2");
                txtComissoes.Text = Decimal.Parse(BrancoZero(txtComissoes.Text)).ToString("N2");
                txtImpostos.Text = Decimal.Parse(BrancoZero(txtImpostos.Text)).ToString("N2");
                txtVrTotServ.Text = Decimal.Parse(BrancoZero(txtVrTotServ.Text)).ToString("N2");
                txtMoraDia.Text = Decimal.Parse(BrancoZero(txtMoraDia.Text)).ToString("N2");
                txtMulta.Text = Decimal.Parse(BrancoZero(txtMulta.Text)).ToString("N2");

                txtTotPagar.Text = Convert.ToString(Convert.ToDecimal(Convert.ToDecimal(BrancoNulo(txtVrTotServ.Text)) - Convert.ToDecimal(BrancoNulo(txtImpostos.Text)) - Convert.ToDecimal(BrancoNulo(txtComissoes.Text)) - Convert.ToDecimal(BrancoNulo(txtDescontos.Text))) + Convert.ToDecimal(BrancoNulo(txtMoraDia.Text)) + Convert.ToDecimal(BrancoNulo(txtMulta.Text)));
                txtValorLiquido.Text = Convert.ToString(Convert.ToDecimal(BrancoNulo(txtVrTotServ.Text)) - Convert.ToDecimal(BrancoNulo(txtImpostos.Text)) - Convert.ToDecimal(BrancoNulo(txtComissoes.Text)) - Convert.ToDecimal(BrancoNulo(txtDescontos.Text)));

                txtTotPagar.Text = Decimal.Parse(txtTotPagar.Text).ToString("N2");
                txtValorLiquido.Text = Decimal.Parse(txtValorLiquido.Text).ToString("N2");

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }


        }

        protected void btnConfirmaPagarBaixaFatura_Click(object sender, EventArgs e)
        {

            try
            {


                if (rdTipoPagamento.Text.Equals(""))
                {
                    MostrarMsg("Preencher tipo de pagamento");
                }
                else
                {


                    funcTotalizarBaixaFatura();
                    if (rdTipoPagamento.Text.Equals("cheque"))
                    {
                        Int64 numeroCheque = Convert.ToInt64(txtNumeroDoChequeBaixaFatura.Text);
                        int rep = 0;
                        foreach (GridViewRow item in gridPagarFaturasSumario.Rows)
                        {
                            if (rep != 0)
                            {
                                numeroCheque = numeroCheque + 1;
                            }
                            funcConfirmarPagarBaixaFatura(Convert.ToString(System.Web.HttpUtility.HtmlDecode(item.Cells[0].Text)), Convert.ToDouble(item.Cells[1].Text), Convert.ToString(numeroCheque));
                            rep = rep + 1;
                        }
                    }
                    else
                    {
                        foreach (GridViewRow item in gridPagarFaturasSumario.Rows)
                        {
                            funcConfirmarPagarBaixaFatura(Convert.ToString(System.Web.HttpUtility.HtmlDecode(item.Cells[0].Text)), Convert.ToDouble(item.Cells[1].Text), "");
                        }
                    }




                    montarGridPagarFaturas();
                    gridPagarFaturasSumario.DataBind();

                    MostrarMsg("Faturas pagas com sucesso");
                }

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }


        }

        protected void funcConfirmarPagarBaixaFatura(string fornecedor, double valor, string numeroCheque)
        {


            Fatura_Supplier_Pagamento fsp;
            FaturaDAL fDAL = new FaturaDAL();
            FaturaSupplierPagamentoDAL fspDAL = new FaturaSupplierPagamentoDAL();
            FaturaSupplier fs;
            int max = fspDAL.PegarMaxGrupoPagamento();

            double valorTotal = Convert.ToDouble(txtValorTotalPagarBaixaFatura.Text);

            F_ContaDAL fcDAL = new F_ContaDAL();
            F_Conta fc = fcDAL.pesquisarPorNumeroConta(txtContaPagamento.Text);

            Usuario u = Session[Convert.ToString(Session["emailLogado"])] as Usuario;
            fsp = new Fatura_Supplier_Pagamento();
            fsp.id_Login = u.US_id;

            string textoHistorico = "";

            foreach (GridViewRow item in gridPagarFaturas.Rows)
            {

                CheckBox chkBox = (CheckBox)item.FindControl("chkGridPagarFaturaConferencia");
                TextBox txtFornecedor = (TextBox)item.FindControl("txtGridPagarFaturasDestinatario");
                if (chkBox.Checked && txtFornecedor.Text.Equals(fornecedor))
                {

                    fs = new FaturaSupplier();

                    fs = fDAL.PesquisarUmPorId(Convert.ToInt32(item.Cells[9].Text));
                    fs.id_Fatura_Supplier_Pagamento_Grupo = max;
                    fs.nome_destinatario = txtFornecedor.Text;
                    fs.Fatura_Pagamento = Convert.ToDateTime(txtDataPagamentoPagarFatura.Text);
                    fDAL.Alterar(fs);

                    textoHistorico = textoHistorico + "Fornecedor: " + fs.Supplier.S_nome + " - " + "Numero da Fatura: " + fs.Fatura_numero + " - " + "Valor: " + fs.Fatura_VlrTotPagar + "\n";

                }
            }

            fsp.id_Conta = fc.id;
            fsp.data = Convert.ToDateTime(txtDataPagamentoPagarFatura.Text);
            fsp.data_lancamento = DateTime.Now;
            fsp.grupo = max;
            fsp.tipo_pagamento = rdTipoPagamento.Text;

            if (rdTipoPagamento.Text.Equals("cheque"))
            {
                fsp.numero_cheque = numeroCheque;
            }
            else
            {
                fsp.numero_cheque = "";
            }

            fsp.valor_pago = Convert.ToDecimal(valor);


            fsp.historico = textoHistorico;

            fspDAL.inserir(fsp);

            recalcularValorConciliacaoBancaria(Convert.ToInt32(fsp.id_Conta));

        }



        protected void imprimirCheque()
        {

            try
            {

            }
            catch (Exception)
            {

                throw;
            }

        }


        protected void recalcularValorConciliacaoBancaria(int idConta)
        {
            try
            {

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = " ";
                sql = sql + "SELECT fsp.id,'Automatico' as Lancamento, '' as Historico,'Debito' as TipoLancamento, fsp.tipo_pagamento as TipoPagamento, fsp.valor_pago as ValorPago, fsp.saldo_parcial as valorParcial,fsp.data as ord, 'Fatura_Supplier_Pagamento' as Tabela, fsp.id_Conta as IdConta, fsp.grupo as Grupo, fsp.data_lancamento, fsp.numero_cheque AS numeroCheque ";
                sql = sql + "FROM Fatura_Supplier_Pagamento fsp ";
                sql = sql + "WHERE fsp.id_Conta = " + idConta;

                sql = sql + "UNION ALL ";

                sql = sql + "SELECT pm.id, 'Manual' as Lancamento, pm.historico as Historico, pm.tipo_lancamento as TipoLancamento, '' as TipoPagamento, pm.valor_pago as ValorPago, pm.saldo_parcial as valorParcial, pm.data as ord, 'Pagamento_Manual' AS Tabela, pm.id_conta as IdConta, '' as Grupo, pm.data_lancamento, '' AS numeroCheque ";
                sql = sql + "FROM Pagamento_Manual pm ";
                sql = sql + "INNER JOIN C_ClassificacaoContabil cc ON cc.ClassificacaoContabil_id = pm.id_classificacao_contabil ";
                sql = sql + "WHERE pm.id_Conta = " + idConta;

                sql = sql + "order by ord, data_lancamento ";

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                double valor = 0;
                //double parcialAnterior = 0;
                //bool primeiroRegistro = true;

                while (reader.Read())
                {
                    sql = " ";
                    sql = sql + "UPDATE " + reader["Tabela"].ToString();


                    if (reader["TipoLancamento"].ToString().Equals("credito"))
                    {

                        sql = sql + " SET saldo_parcial = " + Convert.ToString(valor).Replace(",",".") + " + valor_pago ";
                        valor = valor + Convert.ToDouble(reader["ValorPago"]);
                    }
                    else
                    {

                        //if (reader["valorParcial"] is DBNull)
                        sql = sql + " SET saldo_parcial = " + Convert.ToString(valor).Replace(",", ".") + " - valor_pago ";
                        valor = valor - Convert.ToDouble(reader["ValorPago"]);
                    }


                    sql = sql + "WHERE id = " + Convert.ToInt32(reader["id"]);

                    SqlCommand cmd2 = new SqlCommand(sql, Con);
                    cmd2.ExecuteNonQuery();


                }

                sql = " ";
                sql = sql + "UPDATE F_Conta SET saldo = " + valor + " where id = " + idConta;
                SqlCommand cmd3 = new SqlCommand(sql, Con);
                cmd3.ExecuteNonQuery();


                Con.Close();
            }
            catch
            {

                throw;
            }


        }

        protected void btnConfirmarExcluirLancamento_Click(object sender, EventArgs e)
        {



            try
            {

                if (txtTabelaConciliacao_id.Text.Equals("Fatura_Supplier_Pagamento"))
                {

                    FaturaSupplierPagamentoDAL fspDAL = new FaturaSupplierPagamentoDAL();
                    Fatura_Supplier_Pagamento fsp = fspDAL.PesquisarPorId(Convert.ToInt32(txtFaturaConciliacao_id.Text));

                    fsp.historico = txtHistoricoConciliacao.Text;

                    string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                    SqlConnection Con = new SqlConnection(pars[1]);
                    string sql;

                    Con.Open();

                    sql = " ";
                    sql = sql + " UPDATE FaturaSupplier SET Fatura_Pagamento = NULL, id_Fatura_Supplier_Pagamento_Grupo = NULL ";
                    sql = sql + " WHERE id_Fatura_Supplier_Pagamento_Grupo = " + fsp.grupo;

                    sql = sql + "; DELETE Fatura_Supplier_Pagamento";
                    sql = sql + " WHERE grupo = " + fsp.grupo;

                    SqlCommand cmd = new SqlCommand(sql, Con);
                    cmd.ExecuteNonQuery();
                    Con.Close();

                    recalcularValorConciliacaoBancaria(Convert.ToInt32(fsp.id_Conta));
                    preencheGridConciliacao(Convert.ToInt32(fsp.id_Conta), Convert.ToDateTime(txtDataConciliacao.Text));

                }
                else
                {

                    PagamentoManualDAL pmDAL = new PagamentoManualDAL();
                    Pagamento_Manual pm = pmDAL.pesquisarPorId(Convert.ToInt32(txtFaturaConciliacao_id.Text));

                    int idConta = Convert.ToInt32(pm.id_conta);

                    pmDAL.excluir(pm);

                    recalcularValorConciliacaoBancaria(Convert.ToInt32(pm.id_conta));
                    preencheGridConciliacao(Convert.ToInt32(idConta), Convert.ToDateTime(txtDataConciliacao.Text));

                }

                txtBancoConciliacao.Text = "";
                txtAgenciaConciliacao.Text = "";
                txtContaConciliacao.Text = "";
                PopularClassificacaoContabilConciliacao();
                PopularCentroCustoConciliacao();
                PopularMoedaConciliacao();
                txtDataConciliacao.Text = "";
                txtValorConciliacao.Text = "";
                txtHistoricoConciliacao.Text = "";
                rdButtonTipoLancamento.ClearSelection();



                MostrarMsg("Lançamento excluido com sucesso");

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }


        }

        protected void btnGerarRelatorioContasPagarRelatorios_Click(object sender, EventArgs e)
        {

            try
            {

                DSContasPagar ds = new DSContasPagar();

                DataTable dt = ds.Tables["ContasPagar"];

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                DateTime dataInicial = DateTime.ParseExact(txtDataInicialContasPagarRelatorios.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                DateTime dataFinal = DateTime.ParseExact(txtDataFinalContasPagarRelatorios.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);


                Con.Open();

                sql = " ";
                sql = sql + "SELECT	fs.Fatura_Vencimento as data, ";
                sql = sql + "   fs.Fatura_id as idFatura, ";

                sql = sql + "   s.S_Id as supplierId, ";

                sql = sql + "   s.S_nome as supplier, ";
                sql = sql + "   cc.ClassificacaoContabil_nome as classificacaoContabil, ";
                sql = sql + "   ce.CentroCusto_nome as centroCusto, ";
                sql = sql + "   fs.Fatura_numero as fatura, ";
                sql = sql + "   ' ' as juros, ";
                sql = sql + "   fs.Fatura_Comissoes as comissao, ";
                sql = sql + "   fs.Fatura_Descontos as desconto, ";
                sql = sql + "   fs.Fatura_VlrTotServ as valorTotServ, ";
                sql = sql + "   fs.Fatura_VlrTotPagar as valorPagar, ";


                sql = sql + "   fs.Fatura_Impostos as impostos, ";
                sql = sql + "   fs.Fatura_Comissoes as comissoes, ";
                sql = sql + "   fs.Fatura_Descontos as descontos, ";


                sql = sql + "   fs.Fatura_Valor_Conferir as valorConferir, ";
                sql = sql + "   ' ' as valorDollar, ";
                sql = sql + "   fs.ObsGeral as observacoes ";
                sql = sql + "FROM FaturaSupplier fs ";
                sql = sql + "INNER JOIN Supplier s ON fs.Supplier_id = s.S_id ";
                sql = sql + "INNER JOIN C_ClassificacaoContabil cc ON cc.ClassificacaoContabil_id = fs.ClassificacaoContabil_id ";
                sql = sql + "INNER JOIN C_CentroCusto ce ON ce.CentroCusto_id = fs.CentroCusto_id ";
                //sql = sql + "WHERE fs.Fatura_Vencimento between " + string.Format("{0:yyyyMMdd}", txtDataInicialContasPagarRelatorios.Text) + " AND " + string.Format("{0:yyyyMMdd}", txtDataFinalContasPagarRelatorios.Text) + " ";

                sql = sql + "WHERE fs.Fatura_Vencimento between '" + dataInicial.ToString("yyyyMMdd") + "' AND '" + dataFinal.ToString("yyyyMMdd") + "' ";

                //DateTime.ParseExact(res, "yyyyddMM", CultureInfo.InvariantCulture);

                if (!chkBoxTodasAsFaturasRelatorioContasPagar.Checked)
                {
                    sql = sql + "AND fs.Fatura_Pagamento IS NULL ";
                }



                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    DataRow drw = dt.NewRow();

                    drw["data"] = string.Format("{0:dd/MM/yyyy}", reader["data"].ToString());
                    drw["supplier"] = reader["supplier"].ToString();
                    drw["classificacaoContabil"] = reader["classificacaoContabil"].ToString();
                    drw["centroCusto"] = reader["centroCusto"].ToString();
                    drw["fatura"] = reader["fatura"].ToString();
                    drw["juros"] = 0;
                    drw["comissao"] = Convert.ToDecimal(NuloZero(reader["comissao"].ToString()));
                    drw["desconto"] = Convert.ToDecimal(NuloZero(reader["desconto"].ToString()));
                    drw["valorPagar"] = Convert.ToDecimal(NuloZero(reader["valorPagar"].ToString()));
                    drw["valorDollar"] = 0;
                    drw["observacoes"] = reader["observacoes"].ToString();

                    double totalConferir = Convert.ToDouble(NuloZero(reader["valorTotServ"].ToString())) - Convert.ToDouble(NuloZero(reader["impostos"].ToString())) - Convert.ToDouble(NuloZero(reader["comissoes"].ToString())) - Convert.ToDouble(NuloZero(reader["descontos"].ToString()));


                    if (Convert.ToDouble(reader["valorConferir"]) == 0)
                    {
                        drw["status"] = "N/C";
                    }
                    else
                    {
                        if (Convert.ToDouble(reader["valorConferir"]) == totalConferir)
                        {
                            drw["status"] = "TC";
                        }
                        else
                        {
                            drw["status"] = "PC";
                        }
                    }

                    sql = " ";
                    sql = sql + " SELECT id_fatura, nome_file, tabela_referencia, usd, Reais, id_servico";
                    sql = sql + " from F_Conferencia";
                    sql = sql + " where id_fatura = " + Convert.ToInt32(reader["idFatura"]);
                    sql = sql + " and status = 0";

                    SqlConnection Con2 = new SqlConnection(pars[1]);

                    Con2.Open();

                    SqlCommand cmd2 = new SqlCommand(sql, Con2);
                    SqlDataReader reader2 = cmd2.ExecuteReader();
                    string fileDetalhado = "";

                    while (reader2.Read())
                    {

                        List<ModeloGrid> listaModeloGrid = preenncheModeloGrid(Convert.ToInt32(reader["supplierId"]), reader2["nome_file"].ToString());


                        foreach (ModeloGrid item in listaModeloGrid)
                        {


                            if (item.Id == Convert.ToInt32(reader2["id_servico"]) && item.Tabela.Equals(reader2["tabela_referencia"]))
                            {

                                if (item.CambioConferencia != 0)
                                {
                                    fileDetalhado = fileDetalhado + "File: " + Convert.ToString(reader2["nome_file"]) + "- IN:" + item.DataI + "- Valor - " + item.ValorConferir + " Cambio: " + item.CambioConferencia + "\n";
                                }
                                else
                                {
                                    if (Convert.ToDouble(reader2["Reais"]) == 0 || Convert.ToDouble(reader2["usd"]) == 0)
                                    {
                                        fileDetalhado = fileDetalhado + "File: " + Convert.ToString(reader2["nome_file"]) + "- IN:" + item.DataI + "- Valor - " + Convert.ToDouble(reader2["Reais"]) + " Cambio: " + 0 + "\n";
                                    }
                                    else
                                    {
                                        fileDetalhado = fileDetalhado + "File: " + Convert.ToString(reader2["nome_file"]) + "- IN:" + item.DataI + "- Valor - " + Convert.ToDouble(reader2["Reais"]) + " Cambio: " + Convert.ToDouble(reader2["Reais"]) / Convert.ToDouble(reader2["usd"]) + "\n";
                                    }
                                }
                            }

                        }


                    }

                    drw["conferencia"] = fileDetalhado;

                    reader2.Dispose();
                    reader2.Close();
                    Con2.Close();

                    dt.Rows.Add(drw);
                }

                reader.Dispose();
                reader.Close();
                Con.Close();

                RptContasPagarAnalitico rpt = new RptContasPagarAnalitico();

                CrystalDecisions.CrystalReports.Engine.TextObject ObjDataIncial = rpt.ReportDefinition.Sections[1].ReportObjects["dtInicio"] as TextObject;
                CrystalDecisions.CrystalReports.Engine.TextObject ObjDataFinal = rpt.ReportDefinition.Sections[1].ReportObjects["dtFinal"] as TextObject;
                ObjDataIncial.Text = string.Format("{0:dd/MM/yyyy}", txtDataInicialContasPagarRelatorios.Text);
                ObjDataFinal.Text = string.Format("{0:dd/MM/yyyy}", txtDataFinalContasPagarRelatorios.Text);


                rpt.SetDataSource(dt);

                rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Contas a Pagar");


                Con.Close();
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }


        }

        protected void btnRelatorioConciliacao_Click(object sender, EventArgs e)
        {

            modalPopupExtenderRelatorioConciliacao.Show();

        }

        protected void btnGerarRelatorioPainelModalRelatorioConciliacao_Click(object sender, EventArgs e)
        {

            try
            {

                DSConciliacao ds = new DSConciliacao();
                F_ContaDAL fcDAL = new F_ContaDAL();
                F_Conta conta = fcDAL.pesquisarPorNumeroConta(txtContaConciliacao.Text);

                DataTable dt = ds.Tables["Conciliacao"];

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                string datefmIni = Convert.ToDateTime(txtDataIncialModalRelatorioConciliacao.Text).ToString("yyyyMMdd");
                string datefmtratIni = "'" + datefmIni + "'";

                string datefmFim = Convert.ToDateTime(txtDataFinalModalRelatorioConciliacao.Text).ToString("yyyyMMdd");
                string datefmtratFim = "'" + datefmFim + "'";

                sql = " ";
                sql = sql + "SELECT fsp.id,'Automatico' as Lancamento, fsp.data data, fsp.historico as Historico, 'Debito' as TipoLancamento, fsp.tipo_pagamento as TipoPagamento, fsp.valor_pago as ValorPago, fsp.saldo_parcial as valorParcial,fsp.data as ord, 'Fatura_Supplier_Pagamento' as Tabela, fsp.id_Conta as IdConta, fsp.grupo as Grupo, fsp.data_lancamento, fsp.numero_cheque AS numeroCheque, 'FORNECEDORES' AS classificacaoContabil, fsp.numero_cheque AS 'CHEQUE' ";
                sql = sql + "FROM Fatura_Supplier_Pagamento fsp ";
                sql = sql + "WHERE fsp.id_Conta = " + conta.id;
                sql = sql + "AND CONVERT(nvarchar(10), fsp.data, 112) between " + datefmtratIni + " AND " + datefmtratFim;

                sql = sql + "UNION ALL ";

                sql = sql + "SELECT pm.id, 'Manual' as Lancamento, pm.data data, pm.historico as Historico, pm.tipo_lancamento as TipoLancamento, '' as TipoPagamento, pm.valor_pago as ValorPago, pm.saldo_parcial as valorParcial, pm.data as ord, 'Pagamento_Manual' AS Tabela, pm.id_conta as IdConta, '' as Grupo, pm.data_lancamento, '' AS numeroCheque, cc.ClassificacaoContabil_nome AS classificacaoContabil, '' AS 'CHEQUE' ";
                sql = sql + "FROM Pagamento_Manual pm ";
                sql = sql + "INNER JOIN C_ClassificacaoContabil cc ON cc.ClassificacaoContabil_id = pm.id_classificacao_contabil ";
                sql = sql + "WHERE pm.id_Conta = " + conta.id;
                sql = sql + "AND CONVERT(nvarchar(10), pm.data, 112) between " + datefmtratIni + " AND " + datefmtratFim;

                sql = sql + "order by data, data_lancamento ";



                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                string valorAnterior = Convert.ToString(pegaUltimoValorParcialAnteriorAoDia(Convert.ToDateTime(txtDataIncialModalRelatorioConciliacao.Text), conta.id));
                string dataAnterior = "";
                string saldoFinal = "";


                while (reader.Read())
                {
                    DataRow drw = dt.NewRow();

                    drw["data"] = string.Format("{0:dd/MM/yyyy}", reader["data"].ToString());
                    drw["historico"] = reader["Historico"].ToString();
                    drw["lancamento"] = reader["classificacaoContabil"].ToString();
                    drw["numeroCheque"] = reader["CHEQUE"].ToString();

                    drw["saldo"] = reader["valorParcial"].ToString();

                    if (dataAnterior.Equals(drw["data"].ToString()))
                    {
                        valorAnterior = "";
                    }


                    if (reader["TipoLancamento"].Equals("Debito") || reader["TipoLancamento"].Equals("debito"))
                    {
                        drw["valor"] = "(" + string.Format("{0:C}", reader["ValorPago"].ToString()) + ")";
                    }
                    else
                    {
                        drw["valor"] = string.Format("{0:C}", reader["ValorPago"].ToString());
                    }

                    drw["saldoAnterior"] = string.Format("{0:C}", valorAnterior);

                    valorAnterior = reader["valorParcial"].ToString();

                    dataAnterior = string.Format("{0:dd/MM/yyyy}", reader["data"].ToString());

                    saldoFinal = reader["valorParcial"].ToString();

                    dt.Rows.Add(drw);
                }

                RptConciliacaoBancaria rpt = new RptConciliacaoBancaria();

                CrystalDecisions.CrystalReports.Engine.TextObject txtDataInicialConciliacaoBancaria = rpt.ReportDefinition.Sections[1].ReportObjects["txtDataInicialConciliacaoBancaria"] as TextObject;
                CrystalDecisions.CrystalReports.Engine.TextObject txtDataFinalConciliacaoBancaria = rpt.ReportDefinition.Sections[1].ReportObjects["txtDataFinalConciliacaoBancaria"] as TextObject;

                CrystalDecisions.CrystalReports.Engine.TextObject txtNomeBanco = rpt.ReportDefinition.Sections[1].ReportObjects["txtNomeBanco"] as TextObject;
                CrystalDecisions.CrystalReports.Engine.TextObject txtNumeroAgencia = rpt.ReportDefinition.Sections[1].ReportObjects["txtNumeroAgencia"] as TextObject;
                CrystalDecisions.CrystalReports.Engine.TextObject txtNumeroConta = rpt.ReportDefinition.Sections[1].ReportObjects["txtNumeroConta"] as TextObject;
                CrystalDecisions.CrystalReports.Engine.TextObject txtMoeda = rpt.ReportDefinition.Sections[1].ReportObjects["txtMoeda"] as TextObject;


                CrystalDecisions.CrystalReports.Engine.TextObject txtSaldoFinal = rpt.ReportDefinition.Sections[1].ReportObjects["txtSaldoFinal"] as TextObject;

                txtDataInicialConciliacaoBancaria.Text = string.Format("{0:dd/MM/yyyy}", txtDataIncialModalRelatorioConciliacao.Text);
                txtDataFinalConciliacaoBancaria.Text = string.Format("{0:dd/MM/yyyy}", txtDataFinalModalRelatorioConciliacao.Text);

                txtNomeBanco.Text = conta.F_Agencia.F_Banco.Nome;
                txtNumeroAgencia.Text = conta.F_Agencia.Numero;
                txtNumeroConta.Text = conta.Numero;
                txtMoeda.Text = conta.Moeda.Moeda_sigla;

                txtSaldoFinal.Text = saldoFinal;

                rpt.SetDataSource(dt);

                rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Conciliacao Bancaria");

                Con.Close();
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }



        }

        protected void btnIncluirCambio_Click(object sender, EventArgs e)
        {

            try
            {

                CambioDAL cDAL = new CambioDAL();
                Cambio cambio = new Cambio();

                cambio.data = Convert.ToDateTime(txtDataCambio.Text);
                cambio.Cambio1 = Convert.ToDecimal(txtValorCambio.Text);
                cambio.tipoCambio = Convert.ToInt32(cmbTipoCambio.Text);
                cambio.MoedaID_De = Convert.ToInt32(cmbMoedaCambioDe.Text);
                cambio.MoedaID_Para = Convert.ToInt32(cmbMoedaCambioPara.Text);



                cDAL.incluir(cambio);

                popularGridCambio();

                MostrarMsg("Cambio incluido com sucesso");

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }


        }

        protected void btnExcluirCambio_Click(object sender, EventArgs e)
        {
            CambioDAL cambioDAL = new CambioDAL();
            cambioDAL.excluir(cambioDAL.ObterPorId(Convert.ToInt32(lblIdCambio.Text)));
            popularGridCambio();
            MostrarMsg("Cambio Excluido");

        }

        protected void btnAlterarCambio_Click(object sender, EventArgs e)
        {

            try
            {

                CambioDAL cambioDAL = new CambioDAL();
                Cambio cambio = new Cambio();

                cambio.data = Convert.ToDateTime(txtDataCambio.Text);
                cambio.Cambio1 = Convert.ToDecimal(txtValorCambio.Text);
                cambio.tipoCambio = Convert.ToInt32(cmbTipoCambio.Text);
                cambio.MoedaID_De = Convert.ToInt32(cmbMoedaCambioDe.Text);
                cambio.MoedaID_Para = Convert.ToInt32(cmbMoedaCambioPara.Text);
                cambio.Cambio_id = Convert.ToInt32(lblIdCambio.Text);

                cambioDAL.alterar(cambio);

                popularGridCambio();
                MostrarMsg("Cambio alterado com suscesso");



            }
            catch (Exception)
            {

                throw;
            }

        }

        protected void btnListarCambio_Click(object sender, EventArgs e)
        {

            try
            {

                DSListarCambio ds = new DSListarCambio();

                DataTable dt = ds.Tables["Cambio"];

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = " ";
                sql = sql + "SELECT c.data, mp.Moeda_sigla, mp.Moeda_sigla, c.Cambio, CT.nome ";
                sql = sql + "FROM Cambio c ";
                sql = sql + "INNER JOIN Moeda md ON c.MoedaID_De = md.Moeda_id ";
                sql = sql + "INNER JOIN Moeda mp ON c.MoedaID_Para = mp.Moeda_id ";
                sql = sql + "INNER JOIN Cambio_Tipo ct ON c.tipoCambio = ct.id ";
                sql = sql + "ORDER BY c.data ASC ";

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    DataRow drw = dt.NewRow();

                    drw["data"] = string.Format("{0:dd/MM/yyyy}", reader["data"].ToString());
                    drw["moedaDe"] = reader["Moeda_sigla"].ToString();
                    drw["moedaPara"] = reader["Moeda_sigla"].ToString();
                    drw["tipoCambio"] = reader["nome"].ToString();
                    drw["valor"] = Convert.ToDecimal(reader["Cambio"]);


                    dt.Rows.Add(drw);
                }

                RptListarCambio rpt = new RptListarCambio();

                rpt.SetDataSource(dt);

                rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Cambio");

                Con.Close();


            }
            catch (Exception)
            {

                throw;
            }


        }

        protected void EditarCambio_Command(object sender, CommandEventArgs e)
        {
            try
            {

                string[] pars = e.CommandArgument.ToString().Split(',');

                CambioDAL cd = new CambioDAL();

                Cambio tb = cd.ObterPorId(Convert.ToInt32(pars[0]));

                txtDataCambio.Text = string.Format("{0:dd/MM/yyyy}", tb.data);
                cmbTipoCambio.Text = tb.tipoCambio.ToString();
                txtValorCambio.Text = tb.Cambio1.ToString();
                cmbMoedaCambioDe.Text = tb.MoedaID_De.ToString();
                cmbMoedaCambioPara.Text = tb.MoedaID_Para.ToString();
                lblIdCambio.Text = tb.Cambio_id.ToString();

            }
            catch (Exception)
            {

                throw;
            }


        }

        protected void btnListarContas_Click(object sender, EventArgs e)
        {


            try
            {

                DSListarContas ds = new DSListarContas();

                DataTable dt = ds.Tables["Contas"];

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = " ";
                sql = sql + "SELECT b.Nome as Banco, a.Numero as Agencia, c.Numero as Conta, c.Nome as Nome, m.Moeda_sigla as Moeda ";
                sql = sql + "FROM F_Conta c ";
                sql = sql + "INNER JOIN F_Agencia a ON a.id = c.id_Agencia ";
                sql = sql + "INNER JOIN F_Banco b ON b.id = a.id_Banco ";
                sql = sql + "INNER JOIN Moeda m ON m.Moeda_id = c.id_Moeda ";

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    DataRow drw = dt.NewRow();

                    drw["Banco"] = reader["banco"].ToString();
                    drw["Agencia"] = reader["agencia"].ToString();
                    drw["Conta"] = reader["conta"].ToString();
                    drw["Nome"] = reader["nome"].ToString();
                    drw["Moeda"] = reader["moeda"].ToString();

                    dt.Rows.Add(drw);
                }

                RptListarContas rpt = new RptListarContas();

                rpt.SetDataSource(dt);

                rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Contas");

                Con.Close();

            }
            catch (Exception)
            {

                throw;
            }

        }

        protected void btnGerarRelatorioRentabilidade_Click(object sender, EventArgs e)
        {

            try
            {

                DSReceitaOperacional ds = new DSReceitaOperacional();

                DataTable dt = ds.Tables["ReceitaOperacional"];

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = " ";
                sql = sql + "select ftra.File_Transf_id id, 'Transfers' tab, Q.Quotation_Code NumeroFile, qg.Pax_Group_Name Pax, ftra.Data_From, ftra.Data_To, ftra.S_nome fornecedor, ftra.Transf_nome ServiceName, Transf_total ValorDolar, (SELECT Cambio FROM Cambio where MoedaID_DE = '1' and MoedaID_Para = '2' and data = (select MAX(data) from Cambio where MoedaID_De = '1' and MoedaID_Para = '2')) as Cambio , Transf_total * (SELECT Cambio FROM Cambio where MoedaID_DE = '1' and MoedaID_Para = '2' and data = (select MAX(data) from Cambio where MoedaID_De = '1' and MoedaID_Para = '2')) as ValorReal, ftra.Valor_Conferir as Vlr_Conferir_Reais, ftra.Cambio as Cambio_Conferencia, (ftra.Valor_Conferir * ftra.Cambio) as Vlr_Conferir_Dolar ";
                sql = sql + "from Quotation q ";
                sql = sql + "inner join Quotation_Grupo qg ON q.Quotation_Id = QG.Quotation_Id ";
                sql = sql + "inner join File_Carrinho fc ON qg.Quotation_Grupo_Id = fc.Quotation_Grupo_Id ";
                sql = sql + "inner join Moeda m ON qg.Moeda_id = m.Moeda_id ";
                sql = sql + "inner join File_Transfers ftra ON fc.File_id = ftra.File_id and ftra.S_id = ftra.S_id ";
                sql = sql + "inner join Supplier s ON ftra.S_id = s.S_id ";
                sql = sql + "where ftra.Status = 'OK' ";
                sql = sql + "and Q.Quotation_Code = '" + txtNumeroFileRelatorios.Text + "'";
                //sql = sql + "and ftra.Range_id <> 0 ";

                sql = sql + "Union all ";

                sql = sql + "select fs.File_ServExtra_id id, 'ServExtra' tab, Q.Quotation_Code NumeroFile, qg.Pax_Group_Name Pax, fs.Data_From, fs.Data_To, fs.S_nome fornecedor, fs.File_ServExtra_nome ServiceName, File_ServExtra_total ValorDolar, (SELECT Cambio FROM Cambio where MoedaID_DE = '1' and MoedaID_Para = '2' and data = (select MAX(data) from Cambio where MoedaID_De = '1' and MoedaID_Para = '2')) as Cambio, File_ServExtra_total * (SELECT Cambio FROM Cambio where MoedaID_DE = '1' and MoedaID_Para = '2' and data = (select MAX(data) from Cambio where MoedaID_De = '1' and MoedaID_Para = '2')) as ValorReal, fs.Valor_Conferir as Vlr_Conferir_Reais, fs.Cambio as Cambio_Conferencia, (fs.Valor_Conferir * fs.Cambio) as Vlr_Conferir_Dolar ";
                sql = sql + "from Quotation q ";
                sql = sql + "inner join Quotation_Grupo qg ON q.Quotation_Id = QG.Quotation_Id ";
                sql = sql + "inner join File_Carrinho fc ON qg.Quotation_Grupo_Id = fc.Quotation_Grupo_Id ";
                sql = sql + "inner join Moeda m ON qg.Moeda_id = m.Moeda_id ";
                sql = sql + "inner join File_ServExtra fs ON fc.File_id = fs.File_id ";
                sql = sql + "where fs.Status = 'OK' ";
                sql = sql + "and Q.Quotation_Code = '" + txtNumeroFileRelatorios.Text + "'";
                //sql = sql + "and fs.Range_id <> 0 ";

                sql = sql + "Union all ";

                sql = sql + "select ft.File_Tarifas_id id, 'Tarifas' tab, Q.Quotation_Code NumeroFile, qg.Pax_Group_Name Pax, ft.Data_From, ft.Data_To, ft.S_nome fornecedor, (s.S_razaosocial + ' - ' + ft.Categoria + ' ' + ft.Room) ServiceName, S_merc_tarif_total ValorDolar, (SELECT Cambio FROM Cambio where MoedaID_DE = '1' and MoedaID_Para = '2' and data = (select MAX(data) from Cambio where MoedaID_De = '1' and MoedaID_Para = '2')) as Cambio, S_merc_tarif_total * (SELECT Cambio FROM Cambio where MoedaID_DE = '1' and MoedaID_Para = '2' and data = (select MAX(data) from Cambio where MoedaID_De = '1' and MoedaID_Para = '2')) as ValorReal, ft.Valor_Conferir as Vlr_Conferir_Reais, ft.Cambio as Cambio_Conferencia, (ft.Valor_Conferir * ft.Cambio) as Vlr_Conferir_Dolar ";
                sql = sql + "from Quotation q ";
                sql = sql + "inner join Quotation_Grupo qg ON q.Quotation_Id = QG.Quotation_Id ";
                sql = sql + "inner join File_Carrinho fc ON qg.Quotation_Grupo_Id = fc.Quotation_Grupo_Id ";
                sql = sql + "inner join Moeda m ON qg.Moeda_id = m.Moeda_id ";
                sql = sql + "inner join File_Tarifas ft ON fc.File_id = ft.File_id ";
                sql = sql + "inner join Supplier s ON ft.S_id = s.S_id ";
                sql = sql + "where ft.Status = 'OK' ";
                sql = sql + "and Q.Quotation_Code = '" + txtNumeroFileRelatorios.Text + "'";
                //sql = sql + "and ft.Range_id <> 0 ";

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    DataRow drw = dt.NewRow();

                    drw["id"] = reader["NumeroFile"].ToString();
                    drw["dataInOut"] = reader["data_From"].ToString() + " - " + reader["data_To"].ToString();
                    drw["pax"] = reader["Pax"].ToString();
                    drw["fornecedor"] = reader["fornecedor"].ToString();
                    drw["servico"] = reader["ServiceName"].ToString();

                    drw["valorDolar"] = Convert.ToDecimal(BrancoNulo(reader["ValorDolar"].ToString()));
                    drw["cambio"] = Convert.ToDecimal(BrancoNulo(reader["Cambio"].ToString()));
                    drw["valorReais"] = Convert.ToDecimal(BrancoNulo(reader["ValorReal"].ToString()));
                    drw["valorConferenciaDolar"] = Convert.ToDecimal(BrancoNulo(reader["Vlr_Conferir_Dolar"].ToString()));
                    drw["cambioConferencia"] = Convert.ToDecimal(BrancoNulo(reader["Cambio_Conferencia"].ToString()));
                    drw["valorConferenciaReais"] = Convert.ToDecimal(BrancoNulo(reader["Vlr_Conferir_Reais"].ToString()));

                    dt.Rows.Add(drw);
                }



                RptReceitaOperacional rpt = new RptReceitaOperacional();

                rpt.SetDataSource(dt);

                rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Receita Operacional");

                Con.Close();

            }
            catch (Exception)
            {

                throw;
            }


        }

        protected void funcTotalizarBaixaFatura()
        {

            List<string> listaFornecedores = new List<string>();
            CheckBox chkPagamento;
            TextBox txtFornecedor;
            Double total;
            List<ModeloBaixaFaturaSumario> listaModeloBaixaFaturaSumario = new List<ModeloBaixaFaturaSumario>();
            ModeloBaixaFaturaSumario modeloBaixaFaturaSumario;

            foreach (GridViewRow item in gridPagarFaturas.Rows)
            {

                chkPagamento = (CheckBox)item.FindControl("chkGridPagarFaturaConferencia");
                txtFornecedor = (TextBox)item.FindControl("txtGridPagarFaturasDestinatario");

                if (chkPagamento.Checked)
                {
                    if (!listaFornecedores.Contains(txtFornecedor.Text))
                    {
                        listaFornecedores.Add(txtFornecedor.Text);
                    }
                }
            }

            foreach (string item in listaFornecedores)
            {

                modeloBaixaFaturaSumario = new ModeloBaixaFaturaSumario();
                total = 0;

                foreach (GridViewRow linha in gridPagarFaturas.Rows)
                {
                    chkPagamento = (CheckBox)linha.FindControl("chkGridPagarFaturaConferencia");
                    txtFornecedor = (TextBox)linha.FindControl("txtGridPagarFaturasDestinatario");

                    if (item.Equals(txtFornecedor.Text) && chkPagamento.Checked)
                    {
                        total = total + Convert.ToDouble(linha.Cells[3].Text);
                    }

                    modeloBaixaFaturaSumario.Nome = item;
                    modeloBaixaFaturaSumario.Valor = total;

                }

                listaModeloBaixaFaturaSumario.Add(modeloBaixaFaturaSumario);

            }


            gridPagarFaturasSumario.DataSource = listaModeloBaixaFaturaSumario;
            gridPagarFaturasSumario.DataBind();


            //foreach (GridViewRow linha in gridPagarFaturasSumario.Rows)
            //{
            //    txtGridPagarFaturasSumario = (TextBox)linha.FindControl("txtGridPagarFaturasSumario");
            //    txtGridPagarFaturasSumario.Text = txtFornecedor.Text;

            //}

        }

        protected void btnPagarBaixaFaturaTotalizar_Click(object sender, EventArgs e)
        {

            try
            {

                funcTotalizarBaixaFatura();

            }
            catch (Exception)
            {

                throw;
            }



        }




        protected void imprimirCheque(string agencia, string conta, string valor, string fornecedor)
        {

            try
            {

                DSConciliacao ds = new DSConciliacao();
                F_ContaDAL fcDAL = new F_ContaDAL();
                //F_Conta conta = fcDAL.pesquisarPorNumeroConta(txtContaConciliacao.Text);

                RptConciliacaoBancaria rpt = new RptConciliacaoBancaria();

                CrystalDecisions.CrystalReports.Engine.TextObject txtAgencia = rpt.ReportDefinition.Sections[1].ReportObjects["txtAgencia"] as TextObject;
                CrystalDecisions.CrystalReports.Engine.TextObject txtNumeroConta = rpt.ReportDefinition.Sections[1].ReportObjects["txtNumeroConta"] as TextObject;

                CrystalDecisions.CrystalReports.Engine.TextObject txtValorCheque = rpt.ReportDefinition.Sections[1].ReportObjects["txtValorCheque"] as TextObject;
                CrystalDecisions.CrystalReports.Engine.TextObject txtFornecedor = rpt.ReportDefinition.Sections[1].ReportObjects["txtFornecedor"] as TextObject;

                txtAgencia.Text = agencia;
                txtNumeroConta.Text = conta;
                txtValorCheque.Text = valor;
                txtFornecedor.Text = fornecedor;

                rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Conciliacao Bancaria");
                //rpt.PrintToPrinter(1, false, 0, 0); // envia direto para impressora

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }



        }

        protected void btnSalvarTipoFatura_Click(object sender, EventArgs e)
        {

            try
            {
                TipoFaturaDAL tDAL = new TipoFaturaDAL();
                C_TipoFatura tipoFatura = new C_TipoFatura();

                tipoFatura.TipoFatura_nome = txtTipoFaturaTabelas.Text;

                tDAL.incluir(tipoFatura);

                PopularDrops();

                MostrarMsg("Tipo de Fatura incluido com sucesso");

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }

        }

        protected void btnSalvarClassificacaoContabil_Click(object sender, EventArgs e)
        {
            try
            {
                ClassificacaoContabilDAL cDAL = new ClassificacaoContabilDAL();
                C_ClassificacaoContabil classificacaoContabil = new C_ClassificacaoContabil();

                classificacaoContabil.ClassificacaoContabil_nome = txtClassificacaoContabilTabelas.Text;

                cDAL.incluir(classificacaoContabil);

                PopularDrops();

                MostrarMsg("Classificação Contabil incluido com sucesso");

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }
        }

        protected void btnSalvarCentroCusto_Click(object sender, EventArgs e)
        {
            try
            {
                CentroCustoDAL cDAL = new CentroCustoDAL();
                C_CentroCusto centroCusto = new C_CentroCusto();

                centroCusto.CentroCusto_nome = txtCentroCustoTabelas.Text;

                cDAL.incluir(centroCusto);

                PopularDrops();

                MostrarMsg("Centro de Custo Incluido com sucesso");

            }
            catch (Exception ex)
            {

                MostrarMsg(ex.Message);
            }
        }

        protected void btnConfirmaDesconferencia_Click(object sender, EventArgs e)
        {

            try
            {

                string idServico = txtServico_id.Text.ToString();
                string tabela = txtTabela.Text.ToString();
                string cambioConferencia = txtCambioConferencia.Text.ToString();
                //double valorTotal = Convert.ToDouble(txtValorTotal.Text);
                int indexPai = Convert.ToInt32(txtIndexPai.Text);

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                if (true)
                {
                    sql = " ";

                    if (tabela.Equals("Servico_Completo_File"))
                    {
                        sql = sql + " UPDATE Servico_Completo_File";
                    }
                    else
                    {
                        sql = sql + " UPDATE File_" + tabela;
                    }

                    sql = sql + " SET Cancelado = 1, FTC = 0";

                    if (tabela.Equals("Transfers"))
                    {
                        sql = sql + " WHERE File_Transf_id = " + idServico;
                    }
                    else
                    {
                        if (tabela.Equals("Servico_Completo_File"))
                        {
                            sql = sql + " WHERE ServicoCompletoFile_id = " + idServico;
                        }
                        else
                        {
                            sql = sql + " WHERE File_" + tabela + "_id = " + idServico;
                        }
                    }


                    if (!ckFTC.Checked)
                    {

                        sql = sql + "; ";
                        sql = sql + " UPDATE F_Conferencia";
                        sql = sql + " SET status = 1";
                        sql = sql + " WHERE tabela_referencia = '" + tabela + "'";
                        sql = sql + " AND id_servico = " + idServico;
                        sql = sql + " AND status = 0";




                        //somarValorConferir("subtrair", item.Reais, item.IdFatura);
                    }
                    else
                    {
                        sql = sql + "; ";
                        sql = sql + " UPDATE F_Conferencia";
                        sql = sql + " SET status = 1";
                        sql = sql + " WHERE tabela_referencia = '" + tabela + "'";
                        sql = sql + " AND id_servico = " + idServico;

                        //valorTotal = valorTotal + contarTotalPorTabelaIdServico(tabela, idServico);                      

                    }

                    List<ModeloGridFilho> listaModeloGridFilho = preencheDataGridFilho(Convert.ToInt32(idServico), tabela, indexPai, ckFTC.Checked);

                    foreach (ModeloGridFilho item in listaModeloGridFilho)
                    {

                        if (!item.Status)
                        {
                            somarValorConferir("subtrair", item.Reais, item.IdFatura);
                        }


                    }



                }
                else
                {




                    sql = " ";
                    if (tabela.Equals("Servico_Completo_File"))
                    {
                        sql = sql + " UPDATE Servico_Completo_File";
                    }
                    else
                    {
                        sql = sql + " UPDATE File_" + tabela;
                    }
                    sql = sql + " SET Cancelado = 0, Valor_Conferir = 0, FTC = 0, Cambio = 0";
                    if (tabela.Equals("Transfers"))
                    {
                        sql = sql + " WHERE File_Transf_id = " + idServico;
                    }
                    else
                    {
                        if (tabela.Equals("Servico_Completo_File"))
                        {
                            sql = sql + " WHERE ServicoCompletoFile_id = " + idServico;
                        }
                        else
                        {
                            sql = sql + " WHERE File_" + tabela + "_id = " + idServico;
                        }
                    }

                }

                SqlCommand cmd = new SqlCommand(sql, Con);
                cmd.ExecuteNonQuery();
                Con.Close();

                preencheDataGrid();
                totalConferir();


            }
            catch (Exception)
            {

                throw;
            }



        }

        protected void txtObsConferencia_TextChanged(object sender, EventArgs e)
        {

            try
            {

                FaturaDAL fd = new FaturaDAL();
                FaturaSupplier f = fd.PesquisarUmPorId(Convert.ToInt32(txtInvoiceConferencia_id.Text));

                f.obs_conferencia = txtObsConferencia.Text;

                fd.Alterar(f);

            }
            catch (Exception)
            {

                throw;
            }


        }







    }
}